如何使用 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
这是一个例子:
我有 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