今天我问了一个类似的问题(Django: exclude User list from all Users),解决方法就是写一个对称的查询。由于我使用多对多关系更改了模型,因此该解决方案不再有效。
如何从用户实例中排除用户列表?用这种方法:
class Shift(models.Model):
shift_location = models.CharField(max_length=200)
users = models.ManyToManyField(User)
def get_shift_users(self):
return self.users.all()
def get_other_users(self):
return User.objects.all().exclude(self.users.all())
我收到错误:AttributeError:'User'对象没有属性'split'
答案 0 :(得分:1)
您需要使用in
运算符:
User.objects.exclude(id__in=self.users.all())
通过使用未评估的查询集(self.users.all()
),它将在子查询中进行转换,因此结果将在单个查询中获取。
答案 1 :(得分:0)
也许是这样的:
User.objects.all().exclude(id__in=[u.id for u in self.users.all()])