如何在django中查询一个集合中的所有对象,这些对象在另一个对象中没有外键

如何在django中查询一个集合中的所有对象,这些对象在另一个对象中没有外键,django,django-models,django-queryset,Django,Django Models,Django Queryset,我有以下目标: class Customer(models.Model): name = models.CharField(max_length=128) class Group(models.Model): customer = models.ForeignKey(Customer) class GroupMember(models.Model): group = models.ForeignKey(Group) member = models.Foreig

我有以下目标:

class Customer(models.Model):
    name = models.CharField(max_length=128)

class Group(models.Model):
    customer = models.ForeignKey(Customer)

class GroupMember(models.Model):
    group = models.ForeignKey(Group)
    member = models.ForeignKey(Member)

class Member(models.Model):
    customer = models.ForeignKey(Customer)
我可以使用以下命令将所有成员分配到一个组:

group_members = group.groupmember_set.all()
member_list = customer.members.all()
特定客户可使用的所有会员:

group_members = group.groupmember_set.all()
member_list = customer.members.all()
我想创建一个列表,列出未分配给组的客户的所有可用成员。比如:

not_group_members = Member.objects.filter(?)

如何创建此查询?

使用您当前的设置,这是不可能的,因为成员的组外键不可为空

但是,如果您更改为:

class Member(models.Model):
    customer = models.ForeignKey(Customer, null=True)
然后您可以找到不在任何组中的成员

not_group_members = Member.objects.filter(group=None)

(我在这里使用了
members
,因为您这样做了,即使默认的相关名称是
member\u set

我可以通过以下方式实现这一点:

customer.members.filter(groupmember__isnull=True)

“成员对组有一个不可为空的外键。”我认为您混淆了
客户