我有以下型号:
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
答案 0 :(得分:3)
在queryset的访问模型属性的参数中,您需要使用__
而不是.
,如下所示:
Post.object.all().exclude(user__is_staff=True)
要排除空值,您可以使用isnull
:
Post.object.all().exclude(user__is_staff=True, sent_at__isnull=True)