Как выставить автогенерируемую документацию drf_spectacular для представления на основе класса, на который нет прямой ссылки в urls.py?
У меня есть приложение Django, которое на основе определенного условия выполняет то или иное представление на основе класса.
def compatibility_whatever_view(request: Request, *args, **kwargs) -> Response:
if is_legacy:
return LegacyWhateverView.as_view()(request, *args, **kwargs)
else:
return WhateverView.as_view()(request, *args, **kwargs)
У меня есть свои WhateverView
и LegacyWhateverView
с полностью совместимым API.
urlpatterns = [
path(
"whatever/<uuid:whatever_id>/",
compatibility_whatever_view,
name="whatever_list_whatevers",
),
]
Я хочу раскрыть документацию WhateverView
с помощью drf_spectacular
. К сожалению, мне это не удается, поскольку, похоже, файл swagger.yml
генерируется только в том случае, если представление на основе класса непосредственно раскрывается в urlpatterns
, иначе он не знает, как построить конечную точку URL. Это вполне логично, но я хотел бы иметь возможность каким-то образом выставлять автоматически сгенерированный WhateverView
на всеобщее обозрение.
Я попробовал немного поколдовать, используя:
@drf_spectacular.utils.extend_schema(operation_id="whatever_list_whatevers")
@rest_framework.decorators.api_view()
def compatibility_whatever_view(request, *args, **kwargs): ...
но в сгенерированной документации не хватало деталей, которые присутствуют, когда я напрямую ссылаюсь на представление на основе класса.