问题
有两张表,一张商品表,一张分类表,商品表中的category_id保存的是分类表中的id,但并未声明主键。
前端做差量更新时,传入商品分类名,则后端需要先根据商品分类名找到分类id,在进行更新,,因此需要先找到django 接收到patch请求时的调用方法
解决过程
点进父类查找patch方法
找到patch方法,发现调用了它父类的partial_update方法,继续点进去查看
发现最终调用的还是update方法,只是传入了一个是否patch的布尔值。进入update方法中
这里传入request.data之前,可以对数据进行修改,加入category_id即可,因此 我们可以重写update方法。
方法一
此时可以解决。
方法二
上篇文章中,提到为了使返回图片地址不包含域名我重写了get_serializer_context()的方法,现在又重写了update方法,在update方法中可以发现
get_serializer()方法,点进去
我们可以直接取出kwargs中数据进行修改,可解决,再注释掉context的赋值,就可以一箭双雕。需要注意的是这里的字典不能直接修改需要先copy()再修改
完美解决,传入分类名即可修改