Набор запросов количества связанных объектов - PullRequest
0 голосов
/ 21 марта 2012

У меня есть модель A с fk для модели B

Теперь мне нужно создать набор запросов, который получает все B с менее чем 5 A. Связанными с ними.

Редактировать Может быть, я должен был упомянуть, что это проект Django, и я ищу справочник по Queryset, достаточно эффективный, чтобы его можно было запускать довольно много раз

я пробовал что-то вроде:

B.objects.select_related ()

но я не понимаю, как ограничить это qs, чтобы включить только B с макс. 5 вхождениями

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Использовать аннотации:

from django.db.models import Count

B.objects.annotate(a_count=Count('a')).filter(a_count__lt=5)

См .: https://docs.djangoproject.com/en/dev/topics/db/aggregation/

0 голосов
/ 21 марта 2012

Ваш вопрос не очень понятен, но, как я понимаю, я думаю, вам нужен следующий код:

from django.db.models import Count
b_qs = B.objects.annotate(num_a=Count('authors')).filter(num_a__lt=5) 
...