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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值