问题

有两张表,一张商品表,一张分类表,商品表中的category_id保存的是分类表中的id,但并未声明主键。
前端做差量更新时,传入商品分类名,则后端需要先根据商品分类名找到分类id,在进行更新,,因此需要先找到django 接收到patch请求时的调用方法

解决过程

DRF APIView中两个无关联表如何做到关联更新点进父类查找patch方法
DRF APIView中两个无关联表如何做到关联更新找到patch方法,发现调用了它父类的partial_update方法,继续点进去查看
DRF APIView中两个无关联表如何做到关联更新发现最终调用的还是update方法,只是传入了一个是否patch的布尔值。进入update方法中
DRF APIView中两个无关联表如何做到关联更新这里传入request.data之前,可以对数据进行修改,加入category_id即可,因此 我们可以重写update方法。

方法一

DRF APIView中两个无关联表如何做到关联更新此时可以解决。

方法二

上篇文章中,提到为了使返回图片地址不包含域名我重写了get_serializer_context()的方法,现在又重写了update方法,在update方法中可以发现
DRF APIView中两个无关联表如何做到关联更新get_serializer()方法,点进去
DRF APIView中两个无关联表如何做到关联更新我们可以直接取出kwargs中数据进行修改,可解决,再注释掉context的赋值,就可以一箭双雕。需要注意的是这里的字典不能直接修改需要先copy()再修改
DRF APIView中两个无关联表如何做到关联更新完美解决,传入分类名即可修改
DRF APIView中两个无关联表如何做到关联更新

相关文章: