我有一个名为 Article 的模型,还有一个名为 Comment 的模型,它有一个指向 Article 的外键。我想从 Article 查询集中计算该查询集中的所有评论。
示例:我有一个包含 5 篇文章的查询集,每篇文章都有 3 条评论,只有一条除外。 -> 这应该返回 12。
另一个例子:一篇文章有 3 条评论,另一篇文章有 5 条评论,其他文章没有评论。 -> 这应该返回 8。
我试过:
Article.objects.all().annotate(comments_count=Count("comment", filter=Q(is_deleted=False))).comments_count
请您参考如下方法:
你应该 .aggregate(..) [Django-doc]这里,不是 [Django-doc] .注释为原始查询集中的每个 项添加一个值。因此,我们可以生成如下查询:annotate(..)
Article.objects.<b>aggregate</b>(
comments_count=Count('comment', filter=Q(comment__is_deleted=False))
)<b>['comments_count']</b>
尽管在这里使用 Comment 模型本身可能更简单,例如:
<b>Comment</b>.objects.filter(
is_deleted=False,
article__in=<i>my_article_qs</i>
)<b>.count()</b>
