我有以下对象:
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(?)
如何创建此查询?
答案 0 :(得分:0)
使用您当前的设置,这是不可能的,因为Member有一个不可为空的外键进行分组。
但是,如果你改为:
class Member(models.Model):
customer = models.ForeignKey(Customer, null=True)
然后你可以找到不属于任何群体的会员。
not_group_members = Member.objects.filter(group=None)
答案 1 :(得分:0)
customer.members.filter(groupmember_set__isnull=True)
(我在这里使用了members
因为你做了,即使默认的相关名称是member_set
。)
答案 2 :(得分:0)
我能够通过以下方式实现这一目标:
customer.members.filter(groupmember__isnull=True)