0

我有以下对象:

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()

我想创建一个未分配到组的客户可用的所有成员的列表。就像是:

not_group_members = Member.objects.filter(?)

如何创建此查询?

4

3 回答 3

0

使用您当前的设置,这是不可能的,因为 Member 有一个不可为空的外键来分组。

但是,如果您更改为:

class Member(models.Model):
    customer = models.ForeignKey(Customer, null=True)

然后您可以找到不属于任何组的成员。

not_group_members = Member.objects.filter(group=None)
于 2013-08-04T23:37:03.753 回答
0

我能够做到这一点:

customer.members.filter(groupmember__isnull=True)
于 2013-08-05T17:02:24.103 回答
0
customer.members.filter(groupmember_set__isnull=True)

(我members在这里使用是因为你这样做了,即使默认的相关名称是member_set.)

于 2013-08-04T23:59:18.087 回答