Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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 queryset的extra()方法中从另一个表中选择相关行_Python_Sql_Django_Postgresql_Django Queryset - Fatal编程技术网

Python 如何在Django queryset的extra()方法中从另一个表中选择相关行

Python 如何在Django queryset的extra()方法中从另一个表中选择相关行,python,sql,django,postgresql,django-queryset,Python,Sql,Django,Postgresql,Django Queryset,我有两个简单的模型: class Blog(models.Model): text = models.Textfield() writer = models.Foreignkey(User) date = models.DateTimeField(auto_now_add=True) class Comment(models.Model): body = models.Textfield() submitted_by = models.Foreignke

我有两个简单的模型:

class Blog(models.Model):
    text = models.Textfield()
    writer = models.Foreignkey(User)
    date = models.DateTimeField(auto_now_add=True)

class Comment(models.Model):
    body = models.Textfield()
    submitted_by = models.Foreignkey(User)
    which_blog = models.Foreignkey(Blog)
    date = models.DateTimeField(auto_now_add=True)
本质上,用户可以提交博客对象,其他用户可以在所述博客对象下留下评论

接下来,我想将最新评论的时间戳添加到每个blog对象。请注意,我不想从整个注释表中附加全局最大时间戳,而只是将所述blog对象作为外键的所有注释的最新时间。也就是说,没有任何附加内容的博客没有任何评论

我无法对上述问题提出质疑。以下是我正在尝试的:

blog_qset = Blog.objects.extra(select={'date':"SELECT max(date) FROM appname_comment WHERE appname_comment.which_blog_id=%s"},select_params=(blog.id,),)
这只是向每个blog对象附加一个全局最大时间戳,而不是仅从注释表的相关行中查找最大值。请根据我在上面大段中描述的要求,帮助我清理extra()中的SQL查询

注意:由于超出此问题范围的原因,我无法使用annotate()完成此任务

试试看:

blog_qset = Blog.objects.extra(select={'date':"SELECT max(date) FROM appname_comment WHERE appname_comment.which_blog_id=%s"},select_params=(blog.id,),)

您能否发布完整的回溯,以及
blog
变量包含的内容?通过
blog
,我试图引用额外方法可能要迭代的blog类的特定实例。它还没有被正式初始化(这样做可能是错误的)。为了满足我的要求,sans
blog
,正确的SQL查询应该是什么?Anush,它消除了语法错误,只是在所有blog文章中添加了一个全局时间戳。我们可能需要修改这个问题。为了反映这一点,我对问题的措辞做了一些修改。