Django Как проверить, что поле выбора не пустое в фильтре

У меня есть поле выбора, которое может быть пустым

   review_comment = models.CharField(max_length=60, choices=REVIEW_COMMENT_CHOICES, blank=True)

Теперь я хочу фильтровать по review_comment!=blank, например

return self.filter(active=True, review_comment!=blank)

Как я могу этого достичь?

Это тот ответ, который вы ищете?

return self.filter(active=True, review_comment__isnull=False)

https://docs.djangoproject.com/en/4.0/ref/models/querysets/#isnull

Потому что у вашего CharField нет параметра null, поэтому по умолчанию он не позволит сохранить нулевое значение. Также Django не рекомендует использовать фильтр null для CharField и TextField https://docs.djangoproject.com/en/dev/ref/models/fields/#null

Для фильтрации пустой строки можно использовать exclude в качестве цепочечного запроса

return self.filter(active=True).exclude(review_comment="")

Я выяснил с помощью этого вопроса, что способ проверить, является ли значение пустым, заключается в использовании исключения

В моем случае я сделал следующее return self.filter(active=True).exclude(review_comment__exact='')

Вернуться на верх