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='')