Как скопировать объект, используя многостоловое наследование в Django

Я пытаюсь скопировать объект, который расширяет другой объект через многостоловое наследование.

Родитель - это группа, а ребенок - это местоположение.

Проблема в том, что родительский объект изменяется вместо создания нового родительского и дочернего объекта.

Вот что я делаю:

location = get_object_or_404(Location, pk=pk)

        location.pk = None
        location.name = location.name+' - child object'
        location.save()

Вместо создания новой строки местоположения и группы в соответствующих таблицах это обновляет таблицу групп, чтобы иметь имя = имя + ' - дочерний объект'.

Как я могу этот процесс создать новое местоположение и строку группы вместо обновления строки группы?

Спасибо!

1 ответ

Решение

Ключевым моментом здесь является то, что многотабличное наследование в Django реализовано с использованием внешних ключей, поэтому объект, который "наследует" другую модель, просто привязан ForeignKey к этой другой модели. Вам нужно будет дублировать оба.

Чтобы узнать, как это сделать, проверьте решение в этом ответе.

Другие вопросы по тегам