以下是一个例子:
我有表Book(publish_time,book_name,authors),作者(author_name,books),他们是ManyToMany。
现在我尝试为每位作者获取最新出版的书籍。
像:
作者 | latest_publish_time |的 BOOK_NAME
1 | 2015-01-01 |这本书
我可以轻松地与作者一起获得latest_publish_time:
Author.objects.values('name').annotate(latest_publish_time=Max('books__publish_time'))
但我不知道如何同时获得这本书的名字。请帮忙。
答案 0 :(得分:0)
查询它然后在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