Миграции для приложений - это хорошо, но все, но когда вы начинаете писать большой проект с большим количеством приложений, вы понимаете, что у вас есть иностранныеКлючевые отношения между приложениями и определение порядка миграции, который необходимо применить для каждого приложения, просто болезненны.
К счастью, у нас также была эта проблема, поэтому у Юга есть система зависимостей.Внутри миграции вы можете объявить, что это зависит от того, будет ли другое приложение сначала запускать определенную миграцию;например, если мое приложение «форум» зависит от приложения «учетные записи», создавшего свою таблицу профилей пользователей, мы можем сделать следующее:
# forum/migrations/0002_post.py class Migration:
depends_on = (
("accounts", "0003_add_user_profile"),
)
def forwards(self):
Затем, если вы попытаетесь перейти на 0002_post или дальше в форумеПриложение сначала проверит, что учетные записи перенесены как минимум до 0003_add_user_profile, и, если нет, перенесет их для вас.
Зависимости также работают в обратном порядке;Саут знает, что не нужно отменять эту миграцию 0003_add_user_profile, пока она не отменит миграцию 0002_post.
У вас может быть несколько зависимостей и все виды дурацких структур;однако есть два правила:
Нет циклических зависимостей (две или более миграции зависят друг от друга) Нет восходящих зависимостей в одном приложении (поэтому нельзя сделать 0002_post в приложении форума зависимым от 0003_room вто же самое приложение, напрямую или через цепочку зависимостей.