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

时间:2015-02-27 15:40:13

标签: django django-models group-by

以下是一个例子:

我有表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'))

但我不知道如何同时获得这本书的名字。请帮忙。

1 个答案:

答案 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