Как исключить пустые значения при запросе конечной точки DRF [Django]

Похож на фильтр исключения, который выглядит следующим образом:

MyObject.objects.exclude(my_field="")

То есть что-то вроде этого:

/api/object?my_field__isempty=False

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

def get_queryset(self):
    return Client.objects.exclude(my_field="")

Если я правильно вас понял, Если вам нужно исключить нулевые значения и пустые строки

ModelName.objects.exclude(field_name__isnull=True).exclude(field_name__exact='')

Или вы можете использовать один из них, этот равен

NOT field_name='' AND field_name IS NOT NULL

@ Ответ Хашема хорош, но вы также могли бы использовать Q утверждения

from django.db.models import Q
# Q allows for complex queries with:
#   & (AND)
#   | (OR)
#   ^ (XOR)

# Exclude method
ModelName.objects.exclude(Q(field_name__isnull=True) | Q(field_name__exact=''))

# Filter Method with ~ (NOT)
ModelName.objects.filter(~Q(field_name__isnull=True) & ~Q(field_name__exact=''))

Просто предлагаю еще один вариант, и знание Q-выражений действительно полезно
Документы: https://docs.djangoproject.com/en/4.1/topics/db/queries/#complex-lookups-with-q

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