Ответ
Для управления схемой базы данных через систему миграций в Django используются следующие ключевые команды manage.py.
Создание и применение миграций
-
python manage.py makemigrations [app_label]Анализирует изменения в ваших моделях (models.py) и создает новые файлы миграций в директорииmigrations/соответствующего приложения. Эти файлы содержат Python-код, описывающий изменения схемы. -
python manage.py migrate [app_label] [migration_name]Применяет все непримененные миграции к базе данных, синхронизируя её состояние с моделями. Без аргументов применяет миграции для всех приложений.
Инспекция и отладка
-
python manage.py showmigrationsПоказывает список всех миграций во всех приложениях проекта и их статус:[X]для примененных и[ ]для непримененных. -
python manage.py sqlmigrate <app_label> <migration_name>Выводит на экран SQL-код, который будет выполнен для указанной миграции. Очень полезно для отладки и понимания того, что именно Django собирается сделать с базой данных.
Продвинутое управление и откат
-
python manage.py migrate <app_label> <migration_name>Позволяет откатить миграции. Чтобы откатить все миграции в приложенииmyappдо миграции0002_..., нужно применить предыдущую миграцию:python manage.py migrate myapp 0001Для полного отката всех миграций приложения используется ключевое слово
zero:python manage.py migrate myapp zero -
python manage.py migrate --fakeОтмечает все непримененные миграции как примененные, но не выполняет соответствующий SQL-код. Используется в редких случаях, когда схема базы данных уже находится в нужном состоянии вручную, и нужно лишь синхронизировать с ней таблицу миграций Django.
Типичный рабочий процесс
# 1. После внесения изменений в models.py создаем файл миграции
python manage.py makemigrations
# 2. Применяем сгенерированную миграцию к базе данных
python manage.py migrate