Я знаю, что это обсуждалось, и это просто, но я не могу найти, что с ним не так.Я поднял свои старые проекты (которые работают!) И соответствовал тому, что я сделал.Это никогда не доходит до обновления в сериализаторе, и я не знаю, почему.Я не знаю, что еще мне не хватает.
Ошибка :
{"last_name": ["Это поле не может быть пустым."],"pass… null."], "email": ["Это поле не может быть пустым."]}, статус: 400
frontend patch('api/getprofile')
django / DRF сериализатор :
class UserSerializer(serializers.ModelSerializer):
first_name = serializers.CharField()
last_name = serializers.CharField()
email = serializers.EmailField()
password = serializers.CharField(style={'input_type': 'password'})
class Meta:
model = User
fields = '__all__'
def create(self, validated_data):
user = User.objects.create(
username=validated_data.get('username'),
email=validated_data.get('email'),
password=validated_data.get('password')
)
user.set_password(validated_data.get('password'))
user.save()
return user
def update(self, instance, validated_data):
#print instance <-- if never gets here... is update not update
for key, value in validated_data.items():
if value:
print value
setattr(instance, key, value)
instance.save()
return instance
views.py
class UserRetrieveUpdateAPIView(generics.RetrieveUpdateAPIView):
serializer_class = UserSerializer
permission_classes = (IsAuthenticated, )
queryset = User.objects.all()
def get_object(self):
return self.request.user
def update(self, request, *args, **kwargs):
serializer = UserSerializer(data=request.data, partial=True)
serializer.is_valid(raise_exception=True)
self.perform_update(serializer)
instance = serializer.instance
return Response(UserSerializer(instance=instance).data, status=status.HTTP_200_OK)