Django在同一个字段上多次注释(Count)

时间:2016-01-11 03:11:09

标签: django django-models

我尝试使用annotate在查询集中的字段上添加计数,并根据不同的过滤器返回结果。在下面的示例中,模型为User,与Article有很多关系。我想依靠文章字段difficulty的不同值的用户文章:

queryset = queryset.filter(article__status='published')\
        .annotate(Count('article', distinct=True))
      .filter(article__difficulty='easy')\
        .annotate(Count('article', distinct=True))\
      .filter(article__difficulty='medium')\
        .annotate(Count('article', distinct=True))\
      .filter(article__difficulty='hard')\
        .annotate(Count('article', distinct=True))

此结果仅返回article__count,其中难度值=硬。

有没有办法在同一个查询集中获取所有四个值的值?

1 个答案:

答案 0 :(得分:0)

这就是你要找的东西吗?

(queryset.filter(article__status='published')
         .values('article__difficulty')
         .annotate(Count('article__difficulty')))