从非工作人员的外键用户开始过滤,与其他过滤器结合使用

时间:2017-12-24 10:00:36

标签: django django-queryset

我有以下型号:

class Post(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='activity',
 sent_at = models.DateTimeField(blank=True, null=True) on_delete=models.CASCADE)

我需要一个查询,排除所有非工作人员并发送的用户为空。

所以我尝试使用exclude:

Post.object.all().exclude(user.is_staff=True)

我收到以下错误:

keyword can't be an expression

1 个答案:

答案 0 :(得分:3)

在queryset的访问模型属性的参数中,您需要使用__而不是.,如下所示:

Post.object.all().exclude(user__is_staff=True)

要排除空值,您可以使用isnull

Post.object.all().exclude(user__is_staff=True, sent_at__isnull=True)