所以我使用django和mysql,我有一个模型MyModel
,其中包含None
字段上region
的一些项目。当我运行时:
results = MyModel.objects.all()\
.values('region')\
.annotate(total=Count('region'))
它正确地返回分组,但其中一个是{'None': 0}
,这是不正确的,因为有些region
字段的项目等于None
。
现在,如果我使用mysql
,那么我可以将其分组:
select region, count(id) from model_table group by region;
返回我想要的解决方案| NULL | 5 |
。
我如何从django实现这一目标?
答案 0 :(得分:1)
你实际上已经在你的问题中写了答案。据我所知,SQL中的COUNT排除了某些假值,如NULL。因此,如果您还要计算falsey值,则使用另一个字段来执行聚合,就像您在SQL语句中使用' id'领域。在这方面,您需要做的就是在' id'上执行COUNT。将您的代码更改为以下内容:
results = MyModel.objects.all()\
.values('region')\
.annotate(total=Count('id'))