如何使用 Django 注释获取附加信息?

How to get additional info using Django annotate?

这是一个例子:

我有 table 本书(publish_time、book_name、作者)、作者(author_name、书籍),它们是 ManyToMany。

现在我尝试为每个作者获取最新出版的书。

喜欢:

作者 | 最新_publish_time | book_name

1 | 2015-01-01 |本书

我可以轻松获得作者的最新_publish_time:

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