Пользовательская схема Django Rest Framework для просмотра в виде набора - PullRequest
0 голосов
/ 08 мая 2018

У меня есть API, созданный с использованием Django и Django REST Framework. У меня есть модель, которая возвращает некоторый JSON, который построен, который не соответствует типичной модели Django. Таким образом, функция автоматической документации, которая использует знания о моделях Django, не работает для некоторых моих представлений.

В частности, у меня есть набор представлений, который возвращает некоторые типичные представления API (например, список объектов), и некоторые представления, которые возвращают некоторые из моих пользовательских объектов. Я хотел бы создать документацию для этих пользовательских объектов, но я не уверен, как переопределить схему для конкретной конечной точки в пределах набора. Как я могу переопределить схему, созданную для одного представления в наборе представлений DRF?

Кажется, что DRF предоставляет эту функцию для представлений , но я хочу сделать то же самое для Viewsets.

1 Ответ

0 голосов
/ 14 сентября 2018

ОК, после большого количества попыток-неудачи-повторения, я наконец-то заставил его работать - вы теряете часть автоматического (магического) самоанализа, например, параметр пути id и описание, взятое из строки документации, но я еще вещь того стоит:

custom_schema = ManualSchema(
    fields=[
        coreapi.Field(
            "id",
            required=True,
            location="path",
            schema=coreschema.String(
                title="ID",
                description="Foobar ID.",
            )
        ),
        coreapi.Field(
            "foobar",
            location="query",
            schema=coreschema.String(
                title="Foobar",
                description="Foobar?",
            )
        ),
    ],
    description="Foobar!",
)


class FoobarViewSet(viewsets.ReadOnlyModelViewSet):

    @action(methods=["get"], detail=True, schema=custom_schema)
    def foobar(self, request, id=None):
        ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...