【发布时间】:2017-06-08 09:14:23
【问题描述】:
我正在尝试限制我在页面上执行的查询数量。查询集返回过去 24 小时内创建的对象。然后,我想过滤该查询集以根据字段计算对象。
例子:
cars = self.get_queryset()
volvos_count = cars.filter(brand="Volvo").count()
mercs_count = cars.filter(brand="Merc").count()
随着品牌数量的增加(在此示例中),查询数量随着必须查询的品牌数量线性增长。
如何对汽车进行单个查询,以返回品牌的所有唯一值和查询集中实例数的字典?
结果:
{'volvos': 4, 'mercs': 50, ...}
谢谢!
编辑:
到目前为止,在 cmets 中,它们已经接近但并不完全符合要求。使用values_list('brand', flat=True) 将返回品牌。从那里你可以使用
from collections import Counter
返回总数。如果有一种方法可以从单个查询中执行此操作,那就太好了,但也许这是不可能的。
【问题讨论】:
标签: python django django-queryset django-orm