Django Rest Framework视图集中的视图自定义模式

时间:2018-05-08 18:26:19

标签: python django python-3.x django-rest-framework

我有一个使用Django和Django REST Framework构建的API。我有一个模型返回一些构建的JSON,它与典型的Django模型不对应。因此,似乎利用Django模型知识的自动文档功能对我的一些观点不起作用。

特别是,我有一个viewset返回一些典型的API视图(如对象列表),以及一些返回一些自定义对象的视图。我想为这些自定义对象构建文档,但我不确定如何覆盖视图集中特定端点的架构。如何覆盖为DRF视图集中的单个视图生成的模式?

DRF seems to provide this functionality for views,但我想为Viewsets做同样的事情。

1 个答案:

答案 0 :(得分:6)

好的,经过大量的尝试-失败-重试,我终于使它起作用了-您失去了一些自动(魔法)自省功能,例如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):
        ...