Django的。如何从相关模型中注释对象计数

时间:2015-10-26 21:41:57

标签: python django django-queryset

让我说我有一个模型评论和另一个模型答案。我想查询所有注释,但也在查询中包含每个注释的答案数。我认为annotate()在这种情况下会很有用,但我只是不知道如何写下来。文档写道:

  

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

答案 0 :(得分:2)

您需要使用a Count aggregation

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