所以,我主要想将结果按某个我知道可以喜欢的特定字段分组
ModelName.objects.values('somefield').annotate(freq=Count('somefield'))
但是在那之前,我想基于一个带注释的字段进行过滤,但是这样做会产生错误的结果,
# Works fine
filtered_queryset = ModelName.objects.annotate(c=Count('related_field')).filter(c__gt=0)
# Yields wrong result.
filtered_queryset.values('somefield').annotate(freq=Count('somefield'))
我尝试通过distinct=True
,但这不能解决我的问题。
为什么我在这里想念?
答案 0 :(得分:1)
您是否偶然有一个已定义的ModelName.Meta.ordering
?
如果是这种情况,那么您将需要order_by()
清除它,否则引用的列也将包含在GROUP BY
子句中。
顺便说一下,这是一个常见的步枪,并且将获得warned about in Django 2.2 and removed in Django 3.1。