djangorestframework框架 保存数据的时候,自动新增了数据问题

背景:

1、最近写一个简单的后台管理页面;使用的是django3.x + djangorestframework;

2、需要把模型筛选出来的数据,修改部分字段后,再存储到数据库

问题:

1、将筛选出来的数据,全部存储到数据库的时候,发现都是新增了,而不是更新原来的数据;我明明传id了。

 

原因:

djangorestframework框架,在保存的时候,调用的是新增的方法。

 

djangorestframework框架,保存过程如下

1)手动调用serializer.isvalid()方法校验

2)调用serializer.save()保存;

***** 注意,重点来了:

        在调用保存的时候,会判断当前的serializer有没有指定模型实例:

        * 如果有,就调用更新方法(如果模型的实例中,包含多条记录,是不能更新的,暂时不支持。如果有多个记录的话,需要创建多个序列器,逐个更新数据)

        * 如果没有,就调用新增方法

从上面可以看出来问题了吧,djangorestframework框架,根据模型来判断是新增还是更新,而不是看你传入的数据中,是否有id字段。

 

在更新的时候,目前只支持更新一个对象的数据;如果传入多个

posted @ 2020-09-17 10:59  ADChen  阅读(299)  评论(0)    收藏  举报