Фильтр Django исключить с помощью ReverseManager - PullRequest
0 голосов
/ 13 июня 2018

У меня есть модель 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 голосов
/ 13 июня 2018

Похоже, secret поле имеет нулевое значение, а не пустую строку.Чтобы исключить эти записи, используйте __isnull lookup:

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