假设我有以下内容:
MY_CHOICES = ( (1, "Choice 1"), (2, "Choice 2"), (3, "Choice 3"), ) class MyModel(models.Model): name = models.CharField(max_length=64, ) category = models.CharField(max_length=4, choices=MY_CHOICES)
现在,我想要做的是按类别分组并获取每个组的实例数。例如,我想得到这样的结果:
Choice 1: 31 Instances Choice 2: 4 Instances Choice 3: 2 Intances
可以使用以下查询完成此操作:
group_by_category = MyModel.objects.values('category').distinct().annotate(count=Count('category'))
上述方法可行,因为values()
将返回一个ValueQuerySet(包含dicts而不是MyModel实例)。所以我不能够使用“get_category_display”来输出“Choice 1”,“Choice 2”等,但我只能打印这些数字。
是否有一种干燥的方法可以使用get_category_display
方法?
我知道我可以使用for循环自行添加显示值来修改每个dict(如果category =='1',那么它的显示值是“Choice 1”等)但是我觉得不够干。
答案 0 :(得分:1)
>>> dict(MY_CHOICES)[1]
"Choice 1"
为什么distinct()
?在这种情况下它能做什么吗?