Django:从所有用户中排除用户列表
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'
可能是这样的:
User.objects.all().exclude(id__in=[u.id for u in self.users.all()])
您需要使用 in
运算符:
User.objects.exclude(id__in=self.users.all())
通过使用未计算的查询集 (self.users.all()
),它在子查询中被转换,因此结果将在单个查询中获取。
我今天问了一个类似的问题(
如何从用户实例中排除用户列表?使用此方法:
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'
可能是这样的:
User.objects.all().exclude(id__in=[u.id for u in self.users.all()])
您需要使用 in
运算符:
User.objects.exclude(id__in=self.users.all())
通过使用未计算的查询集 (self.users.all()
),它在子查询中被转换,因此结果将在单个查询中获取。