首页 > 解决方案 > 视图集中视图的 Django Rest Framework 自定义模式

问题描述

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

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

DRF 似乎为 view 提供了这个功能,但我想为 Viewsets 做同样的事情。

标签: pythondjangopython-3.xdjango-rest-framework

解决方案


好的,经过多次尝试失败重试,我终于让它工作了——你失去了一些自动(神奇的)自省,比如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):
        ...

推荐阅读