Python 修复了实例对象不可调用的错误
我需要使用基于APIView类的代码来编辑用户详细信息,如名字、姓氏。serializers.py和views.py在下给出,但它没有根据用户详细信息进行更改。我正在传递用于用户身份验证的令牌。任何协助都将不胜感激 序列化程序.py 视图.pyPython 修复了实例对象不可调用的错误,python,django,api,django-rest-framework,Python,Django,Api,Django Rest Framework,我需要使用基于APIView类的代码来编辑用户详细信息,如名字、姓氏。serializers.py和views.py在下给出,但它没有根据用户详细信息进行更改。我正在传递用于用户身份验证的令牌。任何协助都将不胜感激 序列化程序.py 视图.py 如果您不提供序列化程序,序列化程序如何知道它必须更新用户 serializer = UserEditSerializer(data=request.data) 应该是: serializer = UserEditSerializer(s
如果您不提供序列化程序,序列化程序如何知道它必须更新用户
serializer = UserEditSerializer(data=request.data)
应该是:
serializer = UserEditSerializer(self.object, data=request.data)
编辑:
另外,删除
返回实例后的()
此视图将起作用。谢谢Linovia
class UserEditProfile(APIView):
authentication_classes = (authentication.TokenAuthentication,)
permission_classes = (permissions.IsAuthenticated,)
def post(self, request):
obj = User.objects.get(id=request.user.id)
serializer = UserEditSerializer(obj, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
还要根据文档仔细检查序列化程序的更新签名。参数顺序错误。谢谢,我应用了它,但它给出了一个完整性错误,如前一个-IntegrityError at/users/edit profile UNIQUE constraint失败:auth_user.id
serializer = UserEditSerializer(self.object, data=request.data)
class UserEditProfile(APIView):
authentication_classes = (authentication.TokenAuthentication,)
permission_classes = (permissions.IsAuthenticated,)
def post(self, request):
obj = User.objects.get(id=request.user.id)
serializer = UserEditSerializer(obj, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)