Рассмотрим на примере Django, но вопрос про любую ORM. Предположим есть продакшн база, в ней какие то данные. надо провести миграцию в следующем хитроватом случае.
Есть модель скажем Model, в ней есть foregin keys на другие модели.
class ModelA: ...
class ModelX: ...
class Model:
a = models.ForeignKey(ModelA, default=A)
x = models.ForeignKey(ModelX, default=X)
И вот в один прекрасный момент мы создаем еще одну модель (ModelY) на которую должна ссылаться Model. И при создании Model у объекта должна быть ссылка на какой то дефолтный объект ModelY, которого еще очевидно нет!
class ModelY: ...
class Model:
y = models.ForeignKey(ModelY, default=??????)
Т.е. последовательность при миграции должна быть такой:
-Создать таблицу ModelY
-Создать в этой таблице дефолтный объект, куда то записать его id
-Создать новое поле в таблице Model, причем дефолтное значение взять из предыдущего пункта
И хотелось бы это всё автоматизировать, разумеется, чтобы никакие миграции ручками не накатывать, потом брать из базы значение и класть его в код. И еще хотелось бы это всё делать в один присест, т.е. определить сразу и новую модель и новое поле в старой моделе, а потом разом накатить миграцию и чтобы всё заработало.
Есть какие то best prectice для такого случая ? Или хотя бы по каким ключевым словам гуглить?