首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何过滤django-queryset中的注释数据

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

Stack Overflow用户
提问于 2016-02-15 18:51:26
回答 1查看 244关注 0票数 2

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

代码语言:javascript
复制
news_list = News.objects.all()\
    .annotate(
        comments_count=Count(
            'comments__id', 
            comments__status=COMMENT_STATUS_APPROVED
        )
    )

但是Count-function的第二个条件不起作用。如何过滤注解函数

EN

回答 1

Stack Overflow用户

发布于 2016-02-17 00:37:52

how to annotate a count with a condition上也有类似的问题,提供了详细的答案和解释。

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

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35407420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档