是否可以将非模型字段添加到PATCH主体?我们以我想要更改用户密码为例。在我的模型中我只有字段password
但是在PATCH中我想添加old_password
来验证用户,然后从body更新密码来自password
字段。有任何想法吗?我找到了SerializerMethodField
,但我不确定是否有可能做我上面所描述的。
您只需将字段添加到序列化程序即可
class MyPatchSerializer(...):
old_password = serializers.CharField(...)
fields = [..., 'old_password']
如果你想验证这个字段,只需添加一个validate_old_pasword(self, value)
到你的序列化器,docs
然后在你的viewset类中你需要覆盖get_serializer_class
(docs),这样你告诉DRF如果用户发送PUT / PATCH请求而不是默认的序列化器,你应该使用MyPatchSerializer
class MyViewSet(...):
...
def get_serializer(self):
if self.action in ('update', 'partial_update'):
return MyPatchSerializer
return self.serializer_class