Метод `.update()` по умолчанию не поддерживает записываемые поля с точечным источником

я пытаюсь обновить некоторые данные и получил эту ошибку, что здесь не так?

Exception Value:    The `.update()` method does not support writable dotted-source fields by default.
Write an explicit `.update()` method for serializer `users.serializers.TransporteurSerializer`, or set `read_only=True` on dotted-source serializer fields.

я пытаюсь создать пользователя нескольких типов, поэтому пользователь (CustomUser) является родительским классом, связанным отношениями один к одному

class TransporteurSerializer(serializers.ModelSerializer):
    # user = CustomUserSerializer()
    first_name = serializers.CharField(source = 'user.first_name')
    last_name = serializers.CharField(source = 'user.last_name')
    email = serializers.CharField(source = 'user.email')
    phone_number = serializers.CharField(source = 'user.phone_number')
    address = serializers.CharField(source = 'user.address')
    class Meta:
        model = Trasporteur
        fields = [
            'id', 'first_name', 'last_name', 'email', 'phone_number', 'address',
            'matricule','car_type','current_location','is_on_travail','bio',
            ]
        def update(self, instance, validated_data):
            user_data = validated_data.pop('user')
            user = instance.user
            
            user.first_name = user_data.get('first_name',user.first_name)
            user.last_name = user_data.get('last_name',user.last_name)
            user.email = user_data.get('email',user.email)
            user.phone_number = user_data.get('phone_number',user.phone_number)
            user.address = user_data.get('address',user.address)
            user.save()

            instance.matricule = validated_data.get('matricule', instance.matricule)
            instance.car_type = validated_data.get('car_type', instance.car_type)
            instance.current_location = validated_data.get('current_location', instance.current_location)
            instance.is_on_travail = validated_data.get('is_on_travail', instance.is_on_travail)
            instance.bio = validated_data.get('bio', instance.bio)
            instance.save()

            return instance

К сожалению, вам придется писать обновление в сериализаторе вручную.

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