Различные описания методов в пользовательском @action для маршрутизации
Я сделал настраиваемый маршрутизируемый метод с декоратором @action для DRF ViewSet.
В этом маршруте реализовано несколько методов (GET, POST, DELETE). Можно ли иметь разные описания для каждого метода или даже создавать разные определения @extend_schema для каждого метода?
Урош
2 ответа
Вы можете сделать это без необходимости переопределения отдельных методов.
@extend_schema_view(
list=extend_schema(description='view list description'),
retrieve=extend_schema(description='view retrieve description'),
extended_action=extend_schema(description='view extended action description'),
raw_action=extend_schema(description='view raw action description'),
)
class XViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
...
Вы также можете использовать
@extend_schema
на любом
@action
или обычный метод (например,
retrieve
,
get
). Это также работает для разделения:
@extend_schema(request=UpdateSerializer)
@multi2.mapping.put
def multi2put(self, request, *args, **kwargs):
...
Согласно документации, ссылка @<function_name>.mapping.delete позволит разделить функцию на несколько методов (.delete для моего случая). Теперь просто правильно задокументировать каждый метод.