使用ReverseManager排除Django过滤器

时间:2018-06-13 11:24:15

标签: django filter django-queryset

我有一个模型Tenant和一个模型SocialMediaContextTenant,它具有Tenant模型的外键。

class SocialMediaContextTenant(AbstractSocialMediaContext):
    tenant = models.ForeignKey('campaigns.Tenant')
    secret = models.CharField(...)

我想过滤所有连接SocialMediaContextTenant设置了secret字段的租户。

到目前为止,我有这个查询

Tenant.objects
      .exclude(socialmediacontexttenant__secret='')
      .values_list('id', flat=True)

但排除过滤器似乎不起作用,因为我仍然得到一个空secret字段的结果

1 个答案:

答案 0 :(得分:1)

看起来secret字段的值为空值,而不是空字符串。要排除这些记录,请使用__isnull查找:

Tenant.objects.exclude(socialmediacontexttenant__secret='').exclude(socialmediacontexttenant__secret__isnull=True)