我认为分四步来做可能更好:
- 首先添加包含用于开始的
NULL
的字段assignedtip_date
;
- 然后运行data migration,用
assignedtip
的截断部分填充字段;
- 然后删除
assginedtip
字段;以及
- 最后,将
assginedtip_date
字段重命名为assignedtip
.
因此,迁移将如下所示:
# app_name/migrations/0123_some_name.py
from django.db import migrations, models
from django.db.models.functions import TruncDate
def migrate_date(apps, schema_editor):
MyModel = apps.get_model("app_name", "MyModel")
MyModel.objects.update(assignedtip_date=TruncDate('assignedtip'))
class Migration(migrations.Migration):
dependencies = [("migrations", "0001_initial")]
operations = [
migrations.AddField(
"MyModel", "assignedtip_date", models.DateField(null=True)
),
migrations.RunPython(migrate_date),
migrations.RemoveField("MyModel", "assignedtip"),
migrations.RenameField("MyModel", "assignedtip_date", "assignedtip"),
]