Как фильтровать по дате в Django Rest Framework
Я написал следующий код, пытаясь фильтровать по датам с помощью DRF:
class FixtureFilter(django_filters.FilterSet):
date = django_filters.DateFilter('date__date', lookup_expr='exact')
class Meta:
model = Fixture
fields = ['date']
class FixtureViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Fixture.objects.all().order_by('-date')
serializer_class = FixtureSerializer
permission_classes = [permissions.IsAuthenticated]
filter_class = FixtureFilter
Когда я делаю вызов API типа http://localhost:8000/api/v1/fixtures?date=2021-11-29
, он возвращает мне более 1 объекта, тогда как должен возвращать только 1 объект.
Как мне правильно реализовать это?
Я полагаю, что вы должны добавить поле filter_backends
к FixtureViewSet
, чтобы заставить его работать, как описано в документации к . Также не забудьте обновить INSTALLED_APPS
с django_filter. Исправленная версия будет выглядеть следующим образом:
from django_filters import rest_framework as filter
class FixtureFilter(django_filters.FilterSet):
date = django_filters.DateFilter('date', lookup_expr='exact')
class Meta:
model = Fixture
fields = ['date']
class FixtureViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Fixture.objects.all().order_by('-date')
serializer_class = FixtureSerializer
permission_classes = [permissions.IsAuthenticated]
filter_backends = (filters.DjangoFilterBackend,)
filter_class = FixtureFilter