Применение миграций

Команда migrate применяет SQL-миграции из сабмодуля auth_perms и из самого сервиса. Это базовая команда, с которой обычно начинается подготовка новой базы.

Команда

uv run manage.py migrate

Используйте команду, когда нужно развернуть схему с нуля или применить новые файлы миграций. Менеджер собирает миграции автоматически и выполняет их в лексикографическом порядке по имени файла.

По умолчанию: Команда применяет все найденные миграции по порядку.

Параметры

Параметр Описание
--name, -n Имя миграции без расширения .py.

Дополнительные примеры запуска

Применить одну конкретную миграцию

uv run manage.py migrate --name 002_mcms_remotes

Полезно, когда нужно точечно проверить новую миграцию сервиса, не трогая остальные файлы.

Как работает

  1. Создает таблицу migrations, если истории применений еще нет.
  2. Собирает директории миграций: сначала submodules/auth_perms/core/migrations, затем проектные каталоги migrations.
  3. Для каждого файла импортирует модуль и проверяет наличие класса Migration, наследование от BaseMigration и атрибут forwards_query.
  4. Передает валидную миграцию в общий механизм forward_migration(...), который выполняет SQL и пишет запись в таблицу истории.

Что важно учесть

  • Если в настройках задан ORDERED_MIGRATIONS_DIRS, команда использует только этот список директорий и не делает автопоиск.
  • Ошибки импорта и некорректная структура migration-модуля не валят весь проход целиком: проблемная миграция печатает ошибку и пропускается.
  • Порядок применения зависит от имени файла, поэтому префиксы вида 001_, 002_ должны оставаться строгими.
  • Команду лучше запускать из корня репозитория: относительные пути и автопоиск рассчитываются именно оттуда.