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”
我的序列化程序乐趣在于
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”