Django Rest Framework 更新字段

Django RestFrame work to update the fied

我的序列化程序乐趣在于

class change_pwdform(serializers.ModelSerializer):
    def update(self, instance, validated_data):
        user.set_password(validated_data.get('new_password', new_password))
        user.save()
        return instance
    old_password = serializers.CharField(   style={'input_type': 'password'})
    new_password = serializers.CharField(   style={'input_type': 'password'})
    class  Meta:    
        fields = ( 'pty_email','old_password','new_password',)
        model = registration

在我的模型中,我只有一个名为

的文件
password field in model

我修改密码的视图函数是,

class Change_Password(mixins.ListModelMixin,
              mixins.CreateModelMixin,
              generics.GenericAPIView):
    serializer_class = change_pwdform
    def post(self, request, format=None):
            email = request.data['pty_email']
            pwd = request.data['old_password']
            user = registration.objects.filter(pty_email=email, pty_password=pwd)           
            if user:                        
                    user = registration.objects.get(pty_email=email)
                    request['password'] = request.data['new_password']
                    print request.data //says quickdict of email , password , new_password, and old_password
                    serializer = change_pwdform(object, data=request.DATA, partial=True)
                    if serializer.is_valid():
                        serializer.save()
                        data = { "result":"success"}
                        return Response(data)
            error ={"Invalid"}                                              
            return Response(error, status=status.HTTP_400_BAD_REQUEST)   

这个请求return一个命令确认:成功但是密码还没有改变。

提前致谢..

您可以在序列化程序中编写一个更新函数,例如 this.Following

def update(self, instance, validated_data):

        user.set_password(validated_data.get('new_password', new_password))
        user.save()
        return instance

这里的 user 是用户对象,在你的 views.py 你必须像这样传递模型对象

change_pwdform = change_pwdform(object, data=request.DATA, partial=True)

这对我有用,你也可以参考http://www.django-rest-framework.org/api-guide/serializers/#customizing-multiple-update