gpt4 book ai didi

python - Django - 与过滤器相关的计数

转载 作者:太空宇宙 更新时间:2023-11-03 23:59:08 24 4
gpt4 key购买 nike

我有一个名为 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]这里,不是annotate(..) [Django-doc] .注释为原始查询集中的每个 项添加一个值。因此,我们可以生成如下查询:

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>

关于python - Django - 与过滤器相关的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56307135/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com