Ответ
Миграции в Django — это система контроля версий для схемы вашей базы данных. Они позволяют эволюционно изменять модели и автоматически применять эти изменения к БД, сохраняя при этом данные.
Основной принцип работы:
- Изменение моделей: Вы вносите изменения в файл
models.py
(например, добавляете новое поле). - Создание миграции: Команда
python manage.py makemigrations
анализирует изменения и генерирует файл миграции — Python-код, описывающий, как перейти от старого состояния схемы к новому. - Применение миграции: Команда
python manage.py migrate
выполняет код из файла миграции, изменяя структуру таблиц в базе данных.
Django отслеживает примененные миграции в специальной таблице django_migrations
.
Пример:
Допустим, у нас есть модель Project
:
# myapp/models.py
from django.db import models
class Project(models.Model):
name = models.CharField(max_length=200)
Теперь добавим поле deadline
:
# myapp/models.py
from django.db import models
class Project(models.Model):
name = models.CharField(max_length=200)
deadline = models.DateField(null=True, blank=True) # Новое поле
Выполняем команды в терминале:
# 1. Создаем файл миграции (например, 0002_project_deadline.py)
python manage.py makemigrations myapp
# 2. Применяем миграцию к базе данных
python manage.py migrate myapp
Ключевые преимущества:
- Надежность: Изменения схемы версионируются и применяются последовательно.
- Командная работа: Все разработчики работают с единой историей изменений схемы БД.
- Автоматизация: Не нужно писать SQL-запросы вручную для изменения таблиц.