【发布时间】: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