Я пытаюсь обновить профиль моего пользователя и наткнулся на проблему: биография обновляется, а имя нет. Используя отладчик, он показывает мне, что validated_data имеет только пару ключ-значение «био» и возвращает None
для имени, хотя мой ввод в Browsable API это имя + био.
Отладчик:
validated_data = {'bio': 'small update'}
new_name = validated_data.get('name')
new_name = None
Что я передаю в Browsable API:
{
"name": "ttt_changed,
"bio": "small update"
}
Вот мой сериализатор:
class ProfileSerializer (serializers.ModelSerializer):
name = serializers.CharField(source='user.username',
read_only=True)
image = serializers.ImageField(use_url=True, required=False)
def update(self, instance, validated_data):
new_name = validated_data.get('name')
myuser = validated_data.get('user', instance.user)
myuser_username = validated_data.get('name', myuser.username)
myuser.save()
instance.bio = validated_data.get('bio', profile.bio)
instance.save()
return instance, myuser
class Meta:
model = Profile
fields = ('name', 'bio', 'image')
MyUser имеет отношение один-к-одному с моделью профиля.
Заранее благодарю за ваши ответы, я не могу понять, почему проверенные данные не содержат имени ..