2015-10-26 70 views
1

可以說我有一個模型評論和另一個模型答案。我想查詢所有評論,但在查詢中還包括每條評論的答案數量。我認爲annotate()在這種情況下會很有用,但我不知道如何寫下來。該文檔寫道:Django。如何從相關模型中註釋對象計數

Django中的新增功能1.8:以前版本的Django只允許使用聚合 函數作爲註釋。現在可以使用各種表達式對 模型進行註釋。

所以。這是我的模型的例子:

class Comments(models.Model): 
    ... 

class Answers(models.Model): 
    comment = models.ForeignKey(Comments) 

,這是一個示例查詢:

queryset = Comments.objects.all().annotate(...?) 

我不知道如何註釋回答每個評論具有的Count。也就是說,在FK字段comment上的每條評論有多少個答案。它甚至有可能嗎?有沒有更好的辦法?在經理身上寫一個方法是否更好?

回答

1

您需要使用a Count aggregation

from django.db.models import Count 
comments = Comments.objects.annotate(num_answers=Count('answers')) 
+1

感謝您的回答。額外的說明:我必須爲我的FK添加一個'related_name'才能使其工作。以防萬一有人發現這有用。 – alejoss

相關問題