0
在文檔例如:如何在對django模型中的記錄執行註釋之前過濾記錄?
Book.objects.annotate(num_authors=Count('authors')).filter(num_authors__gt=1)
如何才能篩選作者,作者上執行註釋過嗎? 例如,我想只計算那些名稱爲「John」的作者。
在文檔例如:如何在對django模型中的記錄執行註釋之前過濾記錄?
Book.objects.annotate(num_authors=Count('authors')).filter(num_authors__gt=1)
如何才能篩選作者,作者上執行註釋過嗎? 例如,我想只計算那些名稱爲「John」的作者。
我不相信你可以用Django數據庫抽象API做這個選擇性計數,而不包括一些SQL。您使用extra方法增加了QuerySet的SQL。
假設文檔中的示例是名爲「庫存」的應用程序的一部分,並且使用了與postgresql一起工作的語法(您沒有指定,這是我更熟悉的),以下內容應該可以做到「重新詢問:
Book.objects.extra(
select={"john_count":
"""SELECT COUNT(*) from "inventory_book_authors"
INNER JOIN "inventory_author" ON ("inventory_book_authors"."author_id"="inventory_author"."id")
WHERE "inventory_author"."name"=%s
AND "inventory_book_authors"."book_id"="inventory_book"."id"
"""},
select_params=('John',)
)