Ответ
В системе миграций Django Operation
— это класс, представляющий одно атомарное изменение схемы базы данных. Миграции состоят из списка таких операций, которые Django выполняет последовательно.
Основное назначение операций — обеспечить декларативность и независимость от СУБД. Вместо того чтобы писать SQL-запросы вручную, вы описываете что нужно сделать (создать модель, добавить поле), а Django сам генерирует корректный SQL для конкретной базы данных (PostgreSQL, MySQL, SQLite и т.д.).
Пример файла миграции:
# 0002_auto_20231027_1200.py
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('myapp', '0001_initial'),
]
# Список операций, которые будут выполнены
operations = [
migrations.AddField(
model_name='author',
name='email',
field=models.EmailField(max_length=254, unique=True, default=''),
preserve_default=False,
),
migrations.CreateModel(
name='Book',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)),
('title', models.CharField(max_length=200)),
],
),
]
Наиболее распространенные операции:
CreateModel
: Создает новую таблицу в БД.DeleteModel
: Удаляет таблицу.AddField
: Добавляет новый столбец в таблицу.RemoveField
: Удаляет столбец.AlterField
: Изменяет параметры существующего столбца.RenameModel
/RenameField
: Переименовывает таблицу или столбец.RunPython
: Выполняет произвольный Python-код (для миграций данных).RunSQL
: Выполняет произвольный SQL-запрос.