是否可以在Django中向方法体添加非模型字段?

时间:2018-01-03 01:26:38

标签: python django python-3.x django-models django-rest-framework

是否可以将非模型字段添加到PATCH正文中?让我们以我想要更改用户密码为例。在我的模型中,我只有字段password但是在PATCH中我想添加old_password来验证用户,然后从正文中更新来自password字段的密码。有任何想法吗?我找到了SerializerMethodField,但我不确定是否可以按照上面的描述进行操作。

1 个答案:

答案 0 :(得分:0)

您只需将字段添加到序列化程序

即可
class MyPatchSerializer(...):
    old_password = serializers.CharField(...)
    fields = [..., 'old_password']

如果您要验证此字段,只需添加validate_old_pasword(self, value)添加到序列化程序,docs

然后在你的viewset类中你需要覆盖get_serializer_classdocs),这样你告诉DRF如果用户正在发送PUT / PATCH请求而不是默认的序列化器,你应该使用{{1 }}

MyPatchSerializer