Изменение внешнего ключа на родительский класс/модель

У меня есть ситуация, когда есть различные сущности с внешними ключами к моделям, которые являются подклассами другой модели. Мне нужно обновить эти FK, чтобы они указывали на родителя, так чтобы любой из различных подклассов мог быть связан.

Например, код может быть таким:

class School(Model):
    ...

class University(School):
    ...

class Student(Model):
    university = ForeignKey(University)

... и мне нужно изменить этот FK со Student to University на FK to School.

Я думаю, что все университеты будут иметь тот же ID, что и школа, которая находится в базе данных для этого университета. Поэтому безопасно/надежно ли определять Student:

class Student(Model):
    university = ForeignKey(University)
    school = ForeignKey(School)

Затем сделать миграцию, которая создает новый атрибут school и использует RunPython для копирования id из university в school, затем удалить атрибут university и сделать миграцию для этого?

Возможно ли, что этот метод может сломаться или выдать плохие данные?

Вернуться на верх