(编辑:jimmy 日期: 2024/11/11 浏览:2)
python manage.py makemigrations python manage.py migrate
首先要保证,目前的migration文件和数据库是同步的,通过执行
python manage.py makemigrations
如果看到 这样的提示: No changes detected,则可以继续接下来的步骤
通过执行
python manage.py showmigrations
结果,可以看到当前项目,所有的app及对应的已经生效的migration文件如
git_hook [X] 0001_initial guardian [X] 0001_initial kombu_transport_django [X] 0001_initial message (no migrations) order [X] 0001_initial pay [X] 0001_initial [x] 0002_add_model sessions [X] 0001_initial
通过执行
$ python manage.py migrate --fake pay zero
这里的 pay就是你要重置的app
之后再执行 python manage.py showmigrations,你会发现 文件前的 [x] 变成了[ ]
现在,你可以删除pay 这个 app下的migrations模块中 除 init.py 之外的所有文件。
之后,执行
$ python manage.py makemigrations
程序会再次为这个app 生成 0001_initial.py 之类的文件
最重要的一步来了, 执行
python manage.py migrate --fake-inital
–fake-inital 会在数据库中的 migrations表中记录当前这个app 执行到 0001_initial.py ,但是它不会真的执行该文件中的 代码。
这样就做到了,既不对现有的数据库改动,而又可以重置 migraion 文件,妈妈再也不用在 migration模块中看到一推文件了。
参考https://simpleisbetterthancomplex.com/tutorial/2016/07/26/how-to-reset-migrations.html