gpt4 book ai didi

python - 如何过滤 django-queryset 中带注释的数据

转载 作者:行者123 更新时间:2023-12-01 04:07:10 26 4
gpt4 key购买 nike

我想计算已批准评论的数量?

news_list = News.objects.all()\
.annotate(
comments_count=Count(
'comments__id',
comments__status=COMMENT_STATUS_APPROVED
)
)

但是计数功能的第二个条件不起作用。如何过滤注释函数

最佳答案

how to annotate a count with a condition上有类似的问题并附有详细的SQL解答和解释。

可以conditional aggregation ,使用conditional expression Case 。文档中的示例显示了对单个模型的操作,但您可以使用常规方法来处理模型间关系。以下 QuerySet 应该是您要查找的内容 -

class NewsQuerySet(models.QuerySet):
def with_comment_counts(self):
query = self
query = query.annotate(
comment_count=Sum(
Case(When(comment__status=COMMENT_STATUS_APPROVED, then=1
default=0,
output_field=IntegerField())
),
return query

关于python - 如何过滤 django-queryset 中带注释的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35407420/

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