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,看到一个新用户提出了一个格式良好且高效的问题,这让人耳目一新!