我尝试使用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
,其中难度值=硬。
有没有办法在同一个查询集中获取所有四个值的值?
答案 0 :(得分:0)
这就是你要找的东西吗?
(queryset.filter(article__status='published')
.values('article__difficulty')
.annotate(Count('article__difficulty')))