Django,高效检索多个字段筛选器的计数
我到处寻找,想弄明白这一点,但结果却是空的 我有以下型号:Django,高效检索多个字段筛选器的计数,django,Django,我到处寻找,想弄明白这一点,但结果却是空的 我有以下型号: class Person(models.Model): street_name = models.CharField(max_length=64) 我的目标是得到一组独特的街道名称,用街道上的人数进行注释,最好是以[('street 1',45),('street 2',26),…]的最终形式进行注释。 目前我的做法如下: unique_streets = Person.objects.values_list('street_na
class Person(models.Model):
street_name = models.CharField(max_length=64)
我的目标是得到一组独特的街道名称,用街道上的人数进行注释,最好是以[('street 1',45),('street 2',26),…]的最终形式进行注释。
目前我的做法如下:
unique_streets = Person.objects.values_list('street_name', flat=True).distinct()
street_counts = []
for street in unique_streets:
street_counts.append(Person.objects.filter(street_name=street).count())
people_on_street = zip(unique_streets, street_counts)
这是低效的,因为for循环的每次迭代都会导致额外的数据库命中。是否可以在一个或两个查询中执行此操作 是的,有聚合
from django.db.models import Count
street_counts = Person.objects.values('street_name').annotate(Count('street_name'))
欢迎来到Stack overflow,看到一个新用户提出了一个格式良好且高效的问题,这让人耳目一新!