Django DRF:批量创建api的模式
我正在使用django rest框架构建支持批量创建/更新的API。 在这些情况下,api将接受对象列表,如Django DRF:批量创建api的模式,django,django-rest-framework,Django,Django Rest Framework,我正在使用django rest框架构建支持批量创建/更新的API。 在这些情况下,api将接受对象列表,如 [ {"foo":"bar"}, {"foo":"bar"} ] 我使用的代码允许批量API只是一个小的修改,可以添加选项multi=True,如果数据是一个列表,那么序列化程序就是这样。就像: class FooViewSet(views.ModelViewSet): def create(self, request, *args, **kwargs):
[
{"foo":"bar"},
{"foo":"bar"}
]
我使用的代码允许批量API只是一个小的修改,可以添加选项multi=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:
................
我正在使用api生成文档。
但问题是生成的模式只检测单个模型的请求体。是否有任何配置使DRF schema generator知道它将接受列表类型
这是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"
]
}
}
我的期望是模式将是数组类型的Foo定义
任何帮助都将不胜感激。谢谢您的时间。我知道这是一篇非常古老的文章,但我也面临着类似的问题,作为DRF和python的noob,我花了一段时间才弄明白这一点。 我只需要添加一个简单的装饰。 仅供参考,我已用于批量更新
@method_decorator(name='perform_bulk_create', decorator=swagger_auto_schema(
request_body=ContactSerializer(many=True),
operation_description="post list of contacts"
))
“生成模式和模式生成器”是什么意思?@RedCricket很抱歉让您感到困惑。我的意思是DRF为API文档生成的模式(我使用的是Swagger)啊。你能发布一个问题的屏幕截图吗?嗨@RedCricket,我用招摇过市的json模式更新了我的问题。希望它会有用。对于所有的问题,我还是Django和DRF的新手。你在用:?