Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何缩小Django查询集中的结果?_Python_Mysql_Django_Django Queryset - Fatal编程技术网

Python 如何缩小Django查询集中的结果?

Python 如何缩小Django查询集中的结果?,python,mysql,django,django-queryset,Python,Mysql,Django,Django Queryset,我有一张像这样的桌子: |---------------------------------------| | | | user-1 | blogpost-2 | date_added | | | | | |-------------- two-months -

我有一张像这样的桌子:

|---------------------------------------|
|                                       |
|   user-1 | blogpost-2 |  date_added   |
|                                       |
|                                       |
|-------------- two-months -------------|
|                                       |
|   user-1 | blogpost-1 |  date_added   |
|                                       |
|   user-2 | blogpost-1 |  date_added   |
|                                       |
|---------------------------------------|
SELECT `user_id` FROM `blogs` WHERE NOT (`date_added` > 2014-04-17 08:34:04 )
“两个月”分隔符上方的隔间显示过去两个月内发布的帖子。底部显示的是超过两个月的帖子。这只是我为了解释我的问题而创造的一种逻辑分离。我想找到所有的用户谁没有作出任何博客后,过去两个月。因此,理想的结果是用户2。我曾试图在Django做类似的事情,但我想这是错误的

logs = Blogs.objects.exclude(
        date_added__gt=query_date
    ).values('user_id')
这将被评估为如下内容:

|---------------------------------------|
|                                       |
|   user-1 | blogpost-2 |  date_added   |
|                                       |
|                                       |
|-------------- two-months -------------|
|                                       |
|   user-1 | blogpost-1 |  date_added   |
|                                       |
|   user-2 | blogpost-1 |  date_added   |
|                                       |
|---------------------------------------|
SELECT `user_id` FROM `blogs` WHERE NOT (`date_added` > 2014-04-17 08:34:04 )
这本质上不是我想要的,因为它将同时返回user-1和user-2

我应该如何使用Django QuerySet解决此类问题


注意:博客和用户模型互不相关。该表仅用于存档目的。

您可以从
用户对象开始,然后:

更新:

您更新了您的问题,指出
博客
用户
模型彼此不相关。这通常不是一个好主意,但您可以使用以下方法解决此问题:


请注意,
值('user_id')
部分在这里非常重要,因为它。

尝试按用户分组并注释最早的日期:

Blog.values('user_id'
   ).annotate(oldest=Max('date_added')
   ).exclude(oldest__gt=query_date)
   ).values('user_id')

您想只获取用户还是该用户的所有日志?这将无法解决,因为它找不到关键字“blog”。原因是用户和博客模型之间没有关系。但是
Blog
User
模型之间有关系,不是吗?没有。很遗憾,没有。您的意思是在
博客
模型中有一个用户id字段,但它没有标记为指向
用户
模型的
外键
?坦率地说,那是胡说八道。如果有任何方法可以改变这一点,你真的应该。Django ORM的整个思想是基于模型之间的显式关系。是的,就是这样,我知道这是胡说八道。但它是一个归档表,所以在这种情况下很好。