我试图限制我在一个页面上执行的查询数量。queryset返回在过去24小时内创建的对象。然后我想过滤这个查询集,根据一个字段计算对象。在
示例:
cars = self.get_queryset()
volvos_count = cars.filter(brand="Volvo").count()
mercs_count = cars.filter(brand="Merc").count()
随着品牌数量的增加(在本例中),查询数量与必须查询的品牌数量成线性增长。在
如何对汽车进行一个查询,返回品牌的所有唯一值和查询集中实例数的dict?在
结果:
^{pr2}$谢谢!在
编辑:
在迄今为止的评论中,他们的意见很接近,但并不十分中肯。使用values_list('brand', flat=True)
将返回品牌。从那里你可以使用
from collections import Counter
返回总数。这是一个很好的方法,但如果不是这样的话。在
等价物:
cars.objects.all().values('brand').annotate(total=Count('brand')).order_by('total')
要为每个不同的品牌生成一个计数,可以将
values
与annotate
结合使用。在这为您提供了一个queryset,其每个元素都是一个包含}的字典。您可以将其直接转换为您想要的格式的dict:
^{pr2}$brand
和{相关问题 更多 >
编程相关推荐