Получение ошибки Keyerror при обновлении вложенного сериализатора в DRF

У меня есть два сериализатора AccountSerializer UserProfileSerializer. user в UserProfileSerializer является Foreingkey к AccountSerializer. Когда я пытаюсь обновить UserProfileSerializer, я получаю ошибку ключа confirm_password. На самом деле это валидация в AccountSerializer. Как это предотвратить

#Serializer

class AccountSerializer(ModelSerializer):
    confirm_password = CharField(write_only=True)

    class Meta:
        model = Account
        fields = ["first_name", "last_name", "email", "password", "confirm_password"]
        extra_kwargs = {
            "password": {"write_only": True},
        }

    def validate(self, data):
        if data['password'] != data.pop("confirm_password"):
             raise ValidationError({"error": "Passwords donot match"})
        return data

    def create(self, validated_data):
        user = Account.objects.create_user(**validated_data)
        return user
class UserprofileSerializer(ModelSerializer):
    user = AccountSerializer()

    class Meta:
        model = UserProfile
        fields = "__all__"
    
    def update(self, instance, validated_data):
        user_data = validated_data.pop('user', None)
        print('user_data', user_data)
    
        account = instance.user
        account.first_name = user_data.get('first_name', account.first_name)
        account.last_name = user_data.get('last_name', account.last_name)
        account.email = user_data.get('email', account.email)
        account.save()
        return super().update(instance, validated_data)

#Ошибка enter image description here

Я бы изменил метод validate(...) следующим образом,

def validate(self, data):
    data = super().validate(data)
    confirm_password = data.pop("confirm_password", None)
    if data.get("password") != confirm_password:
        raise ValidationError({"error": "Passwords donot match"})
    return data
Вернуться на верх