如何使用Django注释获取其他信息?
以下是一个例子: 我有表格书(出版时间,书名,作者),作者(作者名,书),它们有很多 现在我试着为每个作者找到最新出版的书 比如: 作者|最新出版时间|书名 1 | 2015-01-01 |这本书 我可以轻松获得作者的最新发布时间:如何使用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进行过滤?像这样的东
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解决了这个问题。但这看起来很有效。我会试试的。谢谢。