drf впечатляюще не показывает параметры запроса в пользовательском интерфейсе swagger
У меня есть общий ListAPIView со следующей функцией запроса списка. Здесь категория - это параметр запроса. Я пытаюсь добиться того, чтобы пользовательский интерфейс swagger также отображал параметр запроса в документе пользовательского интерфейса swagger. Как этого добиться? У меня есть следующий код.
@extend_schema(
parameters=[
OpenApiParameter(name='category',location=OpenApiParameter.QUERY, description='Category Id', required=False, type=int),
],
)
def list(self, request, *args, **kwargs):
category_id = request.query_params.get('category')
....
return Response(data)
2 ответа
Правильная точка входа для аннотаций на
ApiView
(здесь
ListAPIView
) - это метод, а не метод.
Это потому, что это фактический метод и
list
переносится только на прокси в миксин.
class ListAPIView(mixins.ListModelMixin, GenericAPIView):
def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)
Аннотировать
get
метод и вызов
self.list()
себя, и параметр появится.
Я согласен с Инсой, но вы также можете украсить свой вид, чтобы избежать реализации/переопределения метода get только для его украшения.
@extend_schema_view(
get=extend_schema(
parameters=[
OpenApiParameter(name='category', description='Category Id', type=int),
]
)
)
class YourListView(ListAPIView):
...
Я бросилOpenApiParameter
расположение и обязательные аргументы, поскольку они равны значениям по умолчанию.