问题:
原来已经存在的模型类,新增加了一个字段之后,想重新建立模型类
迁移时报错了
解决方式:
1、 首先将各个子应用 app 下 migrations 文件夹中除 init.py 之外,其他文件全部删掉。
2、 先进到数据库中,
python manage.py dbshell
删除 django_migrations 表中,迁移时出错的子应用的所有记录
delete from django_migrations where app='your_appname';
3、先注释掉 ,模型类新增加的那行
python manage.py makemigrations cases
python manage.py migrate cases --fake
显示 : Applying cases.0002_remove_cases_service_type…FAKED
4、再取消注释
python manage.py makemigrations cases
python manage.py migrate cases
谈谈机制:
migrations机制有两个指令,第一个是makemigrations,第二个是migrate,生成migrations代码的makemigrations指令是用models里面的model和当前的migrations代码里面的model做对比,如果有新的修改,就生成新的migrations代码。
migrate指令是用migrations目录中代码文件和django数据库djaong_migrations表中的代码文件做对比,如果表中没有,那就对这些没有的文件按顺序及依赖关系做migrate apply,然后再把代码文件名加进migrations表中。