【问题标题】:Django DRF: Schema for bulk creation apiDjango DRF:批量创建 API 的架构
【发布时间】:2018-11-13 03:44:41
【问题描述】:

我正在使用 django-rest-framework 构建支持批量创建/更新的 API。 在这些情况下,api 将接受一个对象列表,如

[
    {"foo":"bar"},
    {"foo":"bar"}
]

我用来允许批量 API 的代码只是一个小的修改,如果数据是列表,则为序列化程序添加选项 many=True。就像:

class FooViewSet(views.ModelViewSet):
    def create(self, request, *args, **kwargs):
        many = isinstance(request.data, list)
        if many:
            serializer = self.get_serializer(data=request.data, many=True)
            serializer.is_valid(raise_exception=True)
            self.perform_bulk_create(serializer)
        else:
            ................

我正在使用drf_yasg 生成 api 文档。 但问题是生成的模式只检测我的请求主体只是单个模型。是否有任何配置可以使 DRF 模式生成器知道它将接受列表类型?

这是 DRF 生成的架构

{
  "post": {
    "operationId": "foos_create",
    "description": "",
    "parameters": [
      {
        "name": "data",
        "in": "body",
        "required": true,
        "schema": {
          "$ref": "#/definitions/Foo"
        }
      }
    ],
    "responses": {
      "201": {
        "description": "",
        "schema": {
          "$ref": "#/definitions/Foo"
        }
      }
    },
    "tags": [
      "foos"
    ]
  }
}

我的期望是 schema 将是 array 类型的 Foo definition

任何帮助将不胜感激。感谢您的宝贵时间。

【问题讨论】:

  • 生成模式和模式生成器是什么意思?
  • @RedCricket 很抱歉让您感到困惑。我的意思是 DRF 为 API 文档生成的模式(我正在使用 Swagger)
  • 啊。你可以发布问题的屏幕截图吗?
  • 嗨@RedCricket,我用swagger json schema 更新了我的问题有问题。希望对你有用。
  • 抱歉所有问题,我对 Django 和 DRF 还是新手。您在使用:github.com/miki725/django-rest-framework-bulk 吗?

标签: django django-rest-framework


【解决方案1】:

我知道这是很老的帖子,但我遇到了类似的问题,作为 DRF 和 python 的新手,我花了一段时间才弄清楚这些东西。 我只需要添加一个简单的装饰器。 仅供参考,我使用https://github.com/miki725/django-rest-framework-bulk 进行批量更新。

@method_decorator(name='perform_bulk_create', decorator=swagger_auto_schema(
    request_body=ContactSerializer(many=True),
    operation_description="post list of contacts"
))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 2015-01-18
    • 2021-09-11
    • 2018-07-15
    相关资源
    最近更新 更多