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, поэтому фильтрация одного результата не имеет никакого смысла.