我有以下情况: 一个人可以属于多个组织,一个组织可以有多个成员(人员)
class Person(models.Model):
organizations = ManytoManyField(Organization)
我想按成员数量对组织进行分类:
拥有0名成员的组织
拥有1名成员的组织
拥有5名成员或更多成员的组织,等等。
对于这些类别中的每一个,我只想对数据库使用一个查询。这意味着出于性能原因,我根本不想使用for循环。
最后的问题是:如何基于它拥有的多种关系的数量来过滤django查询集?
由于
答案 0 :(得分:1)
在QuerySet上使用Django聚合,尤其是Count。
from django.db.models import Count
Person.objects.aggregate(Count('organizations'))
有关此主题的更多信息:https://docs.djangoproject.com/en/dev/topics/db/aggregation/
(但我也认为在某个地方有.Count()或类似的缩写。)