Я использую django-rest-framework
с django-filter
. Мне нужно получить список виджетов, где свойство date
равно None
, но независимо от того, какой запрос я пытался, я получаю либо пустые ответы, либо полные, нефильтрованные ответы.
Вот как я определил набор видов и фильтров.
class WidgetFilter(django_filters.FilterSet):
date = django_filters.DateTimeFilter(name='date', lookup_type='exact')
no_date = django_filters.DateTimefilter(name='date', lookup_type='isnull')
class Meta:
model = Widget
fields = ['date',]
class WidgetSet(viewsets.ModelViewSet):
model = Widget
filter_class = WidgetFilter
Следующие запросы приводят к пустым ответам []
:
?date=None
?date=0
?date=NULL
?date=False
?date=2012-05-24T11:20:06Z # a known and correct date
Следующие запросы возвращают все возвращаемые объекты:
?date=
?no_date=True
?no_date=False
?no_date=1
?no_date=0
Любая помощь очень ценится! Мне не удалось найти информацию об использовании дат (или передав None
в качестве значения фильтра) с помощью django-filter
через django-rest-framework
.
В случае, если нет более элегантного способа, вот как я использовал свое обходное решение, но мне все равно хотелось бы узнать о решении, которое использует django-filter
, если оно существует.
class WidgetSet(viewsets.ModelViewSet):
model = Widget
def get_queryset(self):
if 'no_date' in self.request.QUERY_PARAMS:
return self.model.objects.filter(date=None)
return self.model.objects.all()