Django-rest-framework: как обновить вложенный внешний ключ? Мой метод обновления даже не вызывается
У меня есть что-то вроде этого (я включил только соответствующие части):
class ImageSerializer(serializers.ModelSerializer):
telescopes = TelescopeSerializer(many=True)
def update(self, instance, validated_data):
# In this method I would perform the update of the telescopes if needed.
# The following line is not executed.
return super().update(instance, validated_data)
class Meta:
model = Image
fields = ('title', 'telescopes',)
Когда я выполняю GET
, я получаю вложенные данные так, как мне нужно, например:
{
'title': 'Some image',
'telescopes': [
'id': 1,
'name': 'Foo'
]
}
Теперь, если я хочу обновить это изображение, изменив название, но не телескопы, я должен PUT
сделать следующее:
{
'title': 'A new title',
'telescopes': [
'id': 1,
'name': 'Foo'
]
}
Кажется, что django-rest-framework
даже не вызывает мой метод update
, потому что проверка модели не удается (Telescope.name
имеет ограничение unique
), а django-rest-framework
проверяет ее так, как будто хочет ее создать?
Все работало нормально, когда я не использовал вложенный сериализатор, а просто PrimaryKeyRelatedField
, но мне нужен вложенный сериализатор по причине производительности (чтобы избежать слишком большого количества вызовов API).
Кто-нибудь знает, что я упускаю?
Спасибо!
Вы найдете решение здесь Django rest relations