Метод `.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
К сожалению, вам придется писать обновление в сериализаторе вручную.