Как фильтровать по дате в 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
Вернуться на верх