Django .save() не обновляется при PUT-запросе
Я пытаюсь обновить иностранное поле с помощью PUT-запроса на ресурсе. Мой serializer.data и http-ответ корректны после вызова .is_valid, но объект не обновляется.
Вид
def put(self, request, user_pk):
try:
userById = getUserById(user_pk)
except ChatUser.DoesNotExist:
raise Http404
serializer = ChatUserInputSerializer(userById, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Сериализатор
class IdentificationInputSerializer(serializers.ModelSerializer):
class Meta:
model = Identification
fields = "__all__"
read_only_fields = ["id"]
class ChatUserInputSerializer(serializers.ModelSerializer):
identification = IdentificationInputSerializer()
class Meta:
model = ChatUser
fields = ["id", "userId", "identification"]
read_only_fields = ["id", "userId"]
def update(self, instance, validated_data):
identification = validated_data.pop('identification')
instance.identification.salutation = identification.get('salutation', instance.identification.salutation)
instance.identification.firstname = identification.get('firstname', instance.identification.firstname)
instance.identification.name = identification.get('name', instance.identification.name)
instance.identification.street = identification.get('street', instance.identification.street)
instance.identification.plz = identification.get('plz', instance.identification.plz)
instance.identification.city = identification.get('city', instance.identification.city)
instance.identification.country = identification.get('country', instance.identification.country)
instance.save()
return instance
Я почти уверен, что django не сохраняет связанные модели, когда вы вызываете .save().
Попробуйте instance.identification.save()