如何使用Django Serializer实现实例的部分字段更新
解决方案
你遇到的校验失败是因为Django REST Framework序列化器默认更新时要求传入所有必填字段,要实现仅更新传入字段的效果,只需在实例化序列化器时添加partial=True参数即可。
修改后的代码示例
sv = SV.objects.get(pk=pk) # 添加partial=True开启部分更新支持 serializer = SVSerializer(sv, data=request.data, partial=True) if serializer.is_valid(): serializer.save() # 后续正常返回响应即可
补充说明
partial=True的作用是告知序列化器仅校验请求中传入的字段,未传入的字段自动复用原有实例的取值,不会触发必填校验。- 如果你需要严格遵循RESTful语义,PUT要求全量更新、仅PATCH允许部分更新的话,可以仅在处理PATCH请求时添加该参数,PUT保持原有全量校验逻辑。
- 如果你自定义了序列化器的全局校验方法,注意不要对未传入的字段做强制非空校验,避免覆盖
partial参数的逻辑。
内容的提问来源于stack exchange,提问作者minghang
相关产品推荐
相关产品推荐

