В моем приложении django (1.8) У меня есть модель TeamMember
, которая имеет логическое поле primary_contact
и отношение внешнего ключа к User
. Я хотел бы найти набор объектов User, у которых нет TeamMember
с primary_contact=True
. (TeamMembers
с primary_contact=False
отлично)Аннотировать запрос с количеством фильтрованных связанных объектов
Я могу получить количество членов команды достаточно легко:
User.objects.annotate(teammember__count=Count('teammember'))
И я могу упреждающий primary_contact TeamMembers достаточно легко, а также:
User.objects.prefetch_related(Prefetch('teammember_set', queryset=.objects.filter(primary_contact=True), to_attr='primary_contacts'))
Однако я не нашли заклинание, позволяющее мне фильтровать запрос на «Пользователи, у которых нет членов команды primary_contact».
Очевидно, что я хотел бы сделать это в ORM, сводя к минимуму запросы и без необработанного SQL, если это возможно.
Интересно, мне не пришло в голову, что орм django разрешил бы такой запрос. Это не совсем то, что я искал, но это меня намного ближе. 'User.objects.exclude (Q (teammember__primary_contact = True))') выглядит многообещающим. Благодаря! –