Различные описания методов в пользовательском @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 для моего случая). Теперь просто правильно задокументировать каждый метод.

Другие вопросы по тегам