Как выставить автогенерируемую документацию 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): ...

но в сгенерированной документации не хватало деталей, которые присутствуют, когда я напрямую ссылаюсь на представление на основе класса.

Вернуться на верх