У вас нет прав для этого пользователя Ошибка при попытке обновить профиль

Получение сообщения об ошибке

"authorize": "You don't have permission for this user."

при попытке обновить профиль пользователя. Я могу обновить информацию из моего класса пользователя по умолчанию (т.е. имя пользователя, имя_фамилия, фамилия и т.д.), но только если я удалю все ссылки на город, страну и биографию (все, что связано с информацией, хранящейся в моей расширенной модели, и сохраню мой метод update вложенным в class Meta:.

Вот мой сериализатор:

#updating user profile
class UpdateUserSerializer(serializers.ModelSerializer):
    email = serializers.EmailField(required=False)
    city = serializers.CharField(source='profile.city')
    country = serializers.CharField(source='profile.country')

    class Meta:
        model = User
        #, 'city', 'country', 'bio'
        fields = ['username', 'email', 'password', 'first_name', 'last_name', 'city', 'country']
        extra_kwargs = {'username': {'required': False},
                        'email': {'required': False},
                        'password': {'required': False},
                        'first_name': {'required': False},
                        'last_name': {'required': False},
                        'city': {'required': False},
                        'country': {'required': False}
                        }


    def validate_email(self, value):
        user = self.context['request'].user
        if User.objects.exclude(pk=user.pk).filter(email=value).exists():
            raise serializers.ValidationError({"email": "This email is already in use."})
        return value

    def validate_username(self, value):
        user = self.context['request'].user
        if User.objects.exclude(pk=user.pk).filter(username=value).exists():
            raise serializers.ValidationError({"username": "This username is already in use."})
        return value

    def update(self, instance, validated_data):
        #re-writing updated profile info from request
        user = self.context['request'].user
        profile = instance.profile

        if user.pk != instance.pk:
            raise serializers.ValidationError({"authorize": "You don't have permission for this user."})

        instance.first_name = validated_data['first_name']
        instance.last_name = validated_data['last_name']
        instance.email = validated_data['email']
        instance.username = validated_data['username']
        instance.save()
        #saving information related to profile
        profile.city = validated_data.profile['city']
        profile.country = validated_data.profile['country']
        profile.save()
        # instance.profile.bio = validated_data.profile['bio']

        instance.save()

        return instance
Вернуться на верх