标签: python django python-3.x django-models django-rest-framework
是否可以将非模型字段添加到PATCH正文中?让我们以我想要更改用户密码为例。在我的模型中,我只有字段password但是在PATCH中我想添加old_password来验证用户,然后从正文中更新来自password字段的密码。有任何想法吗?我找到了SerializerMethodField,但我不确定是否可以按照上面的描述进行操作。
password
old_password
SerializerMethodField
答案 0 :(得分:0)
您只需将字段添加到序列化程序
class MyPatchSerializer(...): old_password = serializers.CharField(...) fields = [..., 'old_password']
如果您要验证此字段,只需添加validate_old_pasword(self, value)添加到序列化程序,docs
validate_old_pasword(self, value)
然后在你的viewset类中你需要覆盖get_serializer_class(docs),这样你告诉DRF如果用户正在发送PUT / PATCH请求而不是默认的序列化器,你应该使用{{1 }}
get_serializer_class
MyPatchSerializer