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
如何使用Django注释获取其他信息?_Django_Django Models_Group By - Fatal编程技术网

如何使用Django注释获取其他信息?

如何使用Django注释获取其他信息?,django,django-models,group-by,Django,Django Models,Group By,以下是一个例子: 我有表格书(出版时间,书名,作者),作者(作者名,书),它们有很多 现在我试着为每个作者找到最新出版的书 比如: 作者|最新出版时间|书名 1 | 2015-01-01 |这本书 我可以轻松获得作者的最新发布时间: Author.objects.values('name').annotate(latest_publish_time=Max('books__publish_time')) 但我不知道如何同时得到书名。请提供帮助。如何查询它,然后用python进行过滤?像这样的东

以下是一个例子:

我有表格书(出版时间,书名,作者),作者(作者名,书),它们有很多

现在我试着为每个作者找到最新出版的书

比如:

作者|最新出版时间|书名

1 | 2015-01-01 |这本书

我可以轻松获得作者的最新发布时间:

Author.objects.values('name').annotate(latest_publish_time=Max('books__publish_time'))

但我不知道如何同时得到书名。请提供帮助。

如何查询它,然后用python进行过滤?像这样的东西可能会满足你的需求

all_books = Author.objects.values('id', 'name', 'books__name', 'books__publish_time').order_by('-books__publish_time')

latest_books = {}
for row in all_books:
    author_id = row[0]
    if author_id in latest_books:
        continue
    latest_books[author_id] = row

我在django中使用原始sql来解决这个问题(嵌套sql)。我不知道在“纯”django中是否有可能做到这一点。我最终用原始sql解决了这个问题。但这看起来很有效。我会试试的。谢谢。