django中models文件迁移——修改和删除
有时候在设计你的一个数据库表时,可能出错或者需要临时调整,在开始阶段出现这种错误并不可怕,只要中间没有数据,都可以改过来。
有时碰到因为错误将DecimalField设置成了DatetimeField,这个时候再去直接修改models中的class里的那个字段,是没有办法直接迁移的,会报错,因为django无法将已经存在Datetime转换为Decimal,这个时候,需要进行如下操作:
- 删除该表所在的app下migrations文件夹中的迁移文件——具体到哪个步骤出现了这个错误,pycache和ini中对应的都删除,比如已经迁移了5次,可能在前三次都是没有报错,那就删除4,和5两个步骤的迁移文件;
- 最好查看以下当前数据库中django_migrations这个表,如果迁移的步骤不涉及你要改的这道,则无需关注,否则可能需要删除相应的记录,保证和(1)中保留的一致;
- 注释掉那个DatetimeField,迁移。这样就可以临时删除掉这个字段
- 再拿掉注释,修改为你所需的字段类型,重新迁移