Django:从所有用户中排除用户列表

时间:2015-03-15 01:15:01

标签: python django django-models

今天我问了一个类似的问题(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'

2 个答案:

答案 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()])