在我的django应用程序(1.8)中,我有一个模型TeamMember
,它有一个布尔字段primary_contact
和一个与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。
答案 0 :(得分:1)
我可能会误解你的问题,但这会有效吗?
User.objects.filter(Q(teammember__primary_contact=False) |
Q(teammember__isnull=True))