让我说我有一个模型评论和另一个模型答案。我想查询所有注释,但也在查询中包含每个注释的答案数。我认为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
上的每条评论。它甚至可能吗?有没有更好的办法?在经理上写一个方法更好吗?
答案 0 :(得分:2)
您需要使用a Count
aggregation:
from django.db.models import Count
comments = Comments.objects.annotate(num_answers=Count('answers'))