DRF APIView中两个无关联表如何做到关联更新

问题

有两张表,一张商品表,一张分类表,商品表中的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()再修改
在这里插入图片描述完美解决,传入分类名即可修改
在这里插入图片描述

发布了3 篇原创文章 · 获赞 2 · 访问量 60

猜你喜欢

转载自blog.csdn.net/qq_38727902/article/details/104797447
DRF
今日推荐