gpt4 book ai didi

python - Django 做一个简单的 group by/count 语句

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:41 25 4
gpt4 key购买 nike

假设我有以下内容:

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 InstancesChoice 2: 4 InstancesChoice 3: 2 Intances

这可以通过以下查询来完成:

group_by_category = MyModel.objects.values('category').distinct().annotate(count=Count('category'))

上面的方法是有效的,因为 values() 将返回一个 ValueQuerySet(其中包含字典而不是 MyModel 实例)。所以我无法使用“get_category_display”来输出“Choice 1”、“Choice 2”等,但我只能打印数字。

是否有一种能够使用 get_category_display 方法的 DRY 方法?

我知道我可以使用 for 循环自己添加显示值来修改每个字典(如果类别=='1',则其显示值是“选择 1”等),但我觉得这还不够干。

最佳答案

>>> dict(MY_CHOICES)[1]
"Choice 1"

为什么distinct()?在这种情况下它有什么作用吗?

关于python - Django 做一个简单的 group by/count 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24218100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com