在過去,我一直在Djangos RunPython操作的幫助下完成此操作。創建一個處理以下內容的自定義遷移。
- 更改字段的名稱。
- 添加所需類型的新字段。
- RunPython處理從一個轉換到另一個的邏輯。
- 刪除舊字段。
def migrate_time_to_positive_int(apps, schema_editor):
MyModel = apps.get_model('myapp', 'MyModel')
for mm in MyModel.objects.all():
field_old_time = mm.field_name_old
field_new_int = field_old_time.total_seconds()/60
mm.field_name = field_new_int
mm.save()
class Migration(migrations.Migration):
operations = [
migrations.RenameField(
model_name='mymodel',
old_name='field_name',
new_name='field_name_old',
),
migrations.AddField(
model_name='mymodel',
name='field_name',
field=models.PositiveIntegerField(),
),
migrations.RunPython(migrate_time_to_positive_int),
migrations.RemoveField(
model_name='mymodel',
name='field_name_old',
)
]
field_name_old.total_seconds()/ 60可能需要進行調整,但你的想法。
這很有趣,我也會試試。謝謝 –