按用户筛选不是在其他模型查询集中使用Q的人员

时间:2018-09-01 08:04:03

标签: django django-queryset django-q

我有以下模型:

class APC(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, related_name='apc', on_delete=models.SET_NULL)
  type= models.CharField(choices=TYPE_CHOICES, max_length=5, blank=True, null=True)

我想获取具有两种特定类型之一的APC对象,并且用户不是职员。

我从:

开始
apcs = APC.objects.filter(
        ~Q(user is staff),
        Q(type=TYPE_CHOICES_A) | Q(type=TYPE_CHOICES_B)
)

1 个答案:

答案 0 :(得分:4)

尝试不使用Q:

apcs = APC.objects.filter(user__is_staff=False, type__in=(TYPE_CHOICES_A, TYPE_CHOICES_B))