【发布时间】:2019-03-25 05:25:15
【问题描述】:
这是来自:
Django queryset get distinct column values with respect to other column 的后续问题
我的问题:
在 Django 中使用聚合计数会在查询集中计算错误的东西,或者据我所知,甚至在我的查询集中都没有。
我做了什么 我用过:
queryset.order_by('col1', 'col2').distinct('col1', 'col2').values('col2')
获取模型的col2 的值,其中所有行在(col1, col2) 中都有一对不同的值。上面的链接中有一个示例。我打印了我的查询集,看起来不错,我有
[{'col2': value1}, ... , {'col2': value1},{'col2': value2}, ..., {'col2': value2},...]
我现在想计算我得到的查询集中每个值出现了多少。我使用聚合计数来做到这一点。我有:
a = {'count': Count(F(col2), distinct=False)}
queryset.annotate(**a)
我也用 ``distinct=True` 尝试过,但没有运气
我希望得到[{col2:value1, count: num1}, {col2:value2, count: num2} ...]。
相反,我得到[{col2: value1, count: num11}, {col2: value1, count: num12}, ... ,{col2: value1, count: num_1n}, {col2: value2, count: num21}, ... ,{col2: value1, count: num_2n}, ...]。
据我所知,num11, ...., num_1n 是 col2 中存在的行 value1 以及 col1 中的任何特定值的行数,在我之前在准备查询时使用order_by('col1', 'col2').distinct('col1', 'col2').values('col2')。
我不知道是什么原因造成的。我尝试查看queryset.query 参数,但我不明白我哪里出错了。
任何帮助将不胜感激。
【问题讨论】:
-
你不应该
Count(F('col1'))吗?
标签: python django django-queryset django-aggregation