Как отфильтровать набор запросов Django по количеству отношений «многие ко многим»? - PullRequest
0 голосов
/ 07 июля 2011

У меня следующая ситуация: человек может принадлежать к нескольким организациям, и организация может иметь несколько членов (человек)

class Person(models.Model):

    organizations = ManytoManyField(Organization)

Я хочу классифицировать организации по количеству членов:

Организации с 0 участниками

Организации с 1 участником

Организации с 5 и более участниками и т. Д.

Для каждой из этих категорий я хочу использовать только один запросв базу данных.Это означает, что я вообще не хочу использовать for-циклы из соображений производительности.

В конце концов, возникает вопрос: как я могу отфильтровать набор запросов django по количеству его многочисленных отношений?

Спасибо

1 Ответ

1 голос
/ 07 июля 2011

Использование агрегирования Django над QuerySets, особенно Count.

from django.db.models import Count
Person.objects.aggregate(Count('organizations'))

Еще по этой теме: https://docs.djangoproject.com/en/dev/topics/db/aggregation/

(Но я также думаю, что где-то есть .Count () или что-то подобное.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...