Drf_yasg отображает параметры набора фильтров только в представлении списка

Я определил набор фильтров для DRF ViewSet. drf_yasg правильно отображает все поля набора фильтров как параметры в Swagger для конечной точки list, но не для других конечных точек.

Есть идеи почему?

views.py:

from rest_framework import mixins, viewsets

from django_filters import rest_framework as filters

from drf_yasg import openapi
from drf_yasg.utils import swagger_auto_schema

from my_app.models import MyModel
from my_app.serializers import MySerializer

class MyFilterSet(filters.FilterSet):
    class Meta:
        model = MyModel
        fields = {
            "status",
        }
class MyViewSet(
    mixins.ListModelMixin,
    mixins.RetrieveModelMixin,
    mixins.UpdateModelMixin,
    viewsets.GenericViewSet,
):

    filter_backends = (filters.DjangoFilterBackend, )
    filterset_class = MyFilterSet
    queryset = MyModel.objects.all()
    serializer_class = MySerializer

Список - это единственное место, где фильтры действительно используются ( см. здесь)

    def list(self, request, *args, **kwargs):
        queryset = self.filter_queryset(self.get_queryset())
        ...

Нечего фильтровать при create/update/delete, поскольку нет множественных результатов. То же самое относится и к retrieve, вы получаете объект по id, поэтому фильтрация одного результата не имеет никакого смысла.

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