Ответ
В Django можно переопределить метаданные миграции, включая дату её создания. Это делается путем добавления атрибута created в класс Migration.
Это может быть полезно для документирования или если внешние инструменты анализируют метаданные миграций.
Важно: Этот атрибут не влияет на порядок применения миграций. Порядок определяется исключительно числовым префиксом в имени файла (например, 0001_, 0002_).
Как указать дату
Нужно вручную отредактировать файл миграции и добавить поле created с объектом datetime.
Пример файла миграции (myapp/migrations/0002_custom_date.py):
# Generated by Django 4.1.7 on 2023-10-27 10:00
from django.db import migrations, models
from datetime import datetime
class Migration(migrations.Migration):
dependencies = [
('myapp', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='mymodel',
name='new_field',
field=models.CharField(max_length=100, null=True),
),
]
# Явно указываем дату и время создания миграции
# Это значение будет сохранено в метаданных
created = datetime(2023, 1, 1, 12, 30, 0)
Рекомендации
- Используйте
datetime: Всегда присваивайте атрибутуcreatedобъектdatetime.datetime, а не строку, чтобы избежать ошибок форматирования. - Не меняйте существующие: Не рекомендуется изменять этот атрибут в уже примененных миграциях, так как это может запутать систему контроля версий и других разработчиков.
- Редкий случай: На практике эта возможность используется крайне редко. Для управления порядком миграций следует использовать правильное именование файлов и управление зависимостями (
dependencies).