Как Django понимает, какие миграции были применены
Python
Middle
Без компании
Как Django понимает, какие миграции были применены
Ответы
Django отслеживает применённые миграции через специальную таблицу в базе данных `django_migrations`. Эта таблица создаётся автоматически при первом выполнении `migrate` и содержит записи о всех выполненных миграциях для каждого приложения.
Каждая запись включает:
- `app` — имя приложения
- `name` — имя файла миграции (без `.py`)
- `applied` — дата применения
При запуске `python manage.py migrate` Django:
- Сравнивает миграции в папках `migrations` с записями в `django_migrations`
- Применяет только те миграции, которых нет в таблице
- Добавляет запись о применённых миграциях в таблицу
Пример проверки применённых миграций:
```
from django.db.migrations.recorder import MigrationRecorder
applied_migrations = MigrationRecorder.Migration.objects.values_list('app', 'name')
```