Django REST框架save()

Django REST框架save(),django,django-rest-framework,Django,Django Rest Framework,使用关键字参数反序列化数据时many=True serialized = MySerializer(data=request.data, many=True) 然后调用.save(),我想知道它是在执行一个数据库操作,还是只是在迭代子数据列表,然后分别执行create()和update()?这是我一直推荐的地方,因为它总是提供最新的答案。当前,ListSerializer的默认create代码为 def create(self, validated_data): return [

使用关键字参数反序列化数据时
many=True

serialized = MySerializer(data=request.data, many=True)

然后调用
.save()
,我想知道它是在执行一个数据库操作,还是只是在迭代子数据列表,然后分别执行
create()
update()

这是我一直推荐的地方,因为它总是提供最新的答案。当前,
ListSerializer
的默认
create
代码为

def create(self, validated_data):
    return [
        self.child.create(attrs) for attrs in validated_data
    ]
答案是它将为每个对象手动调用
create
,这意味着它没有执行批量插入。这部分是因为Django REST框架除了显示数据外,没有设计成能够有效地处理大量数据。默认情况下,它也是


您可以找到有关的更多信息,以及上的帮助。这将要求您使用自己的
create
update
方法创建自己的自定义
ListSerializer
。请记住,
ListSerializer
是Django REST框架内部包装您的
many=True
序列化程序的工具,您可以通过调用
repr(serializer)
看到它,其中
serializer
是您用
many=True
初始化的序列化程序



过去,批量更新由第三方软件包处理。虽然该包与DRF2.x一起工作,但它是。有一个pull请求目前正在审查中,以添加3.0支持,因此我预计不久将有一个新版本添加支持。

根据文档,它将对集合中的每个对象进行一次调用,但您可以覆盖此行为: