Миграция модели Django со стандартной модели на многотабличную унаследованную модель с FK-отношениями
У меня есть задача перевести некоторые существующие модели в многотабличные наследуемые модели (сделать их подклассом существующего родителя). Я тестирую свой код на локальной машине, и мне удалось обеспечить многотабличное наследование без ошибок. Однако некоторые модели связаны ForeignKeys с другими моделями, и мне интересно, как управлять такими отношениями, чтобы избежать потери данных.
Пример:
class Member(models.Model):
pass
class Person_A(models.Model):
member_ptr = OneToOneField(parent_link=True)
class Person_B(models.Model):
member_ptr = OneToOneField(parent_link=True)
class Group(models.Model):
person_a = models.ForeingKey(Person_A)
person_b = models.ForeignKey(Person_B)
Итак, Person_A
и Person_B
находятся на пути к наследованию от Member
. Все экземпляры Member
созданы и данные заполнены. Остался последний шаг - удалить поле _ptr
, заменив models.Model
на Member
, что приведет к исчезновению поля id
, и связь ForeignKey будет разорвана.
Есть ли простой способ управлять этим переносом ForeignKey без потери данных? У меня есть несколько странных идей о дублировании полей и т.д., но я надеюсь, что есть какой-то более удобный способ.