Django 1.7迁移 – 我如何清除所有的迁移,从头开始?
所以我现在正在快速迭代django应用程序,并且不断调整models.py。 在一两天的编程和testing过程中,我生成了几十个迁移文件。 有时候,我真的把这个模式分开了,完全重新做。 这导致迁移过程抱怨很多关于默认和空值等等。 如果可能的话,我只是想抓取所有的迁移工作,现在重新开始迁移,我终于知道自己在做什么了。 到目前为止,我的做法是:
- 删除__init__.py之外的所有迁移文件夹。
-  放入我的PostgreSQL控制台,然后执行: DELETE FROM south_migrationhistory WHERE app_name='my_app';
- 而在PostgreSQL控制台中,删除所有与my_app关联的表。
-  重新运行./manage.py makemigrations my_app– 这会在我的migrations文件夹中生成一个0001_initial.py文件。
-  运行./manage migrate my_app– 我希望这个命令重新构build我的所有表,但是却说:“没有迁移到应用”。
是什么赋予了?
 另外, south_migrationhistory数据库performance在仍然在使用中,我已经倾倒南部,并切换到Django 1.7? 
谢谢。
 所以我在我的问题中概述的分步计划确实有效,但是不要从south_migrationhistory数据库表中删除行,而必须从south_migrationhistory数据库表中删除行。 
 该命令是: DELETE FROM django_migrations WHERE app='my_app' 
完成此操作后,您将可以从头开始重新运行迁移。
我只是想把所有的步骤变成一个命令格式:
  注:下面的命令是相当具有破坏性的,这是一个手段, start from scratch OP start from scratch问。 
 从mikeb发表评论后,我想补充mikeb : 
预先检查您将删除的文件
 find . -path *migrations* -name "*.py" -not -path "*__init__*" 
 然后,将步骤1的命令调整为适用于您的开发环境的命令。 
- 从所有的应用程序中删除所有的迁移:
 find . -path *migrations* -name "*.py" -not -path "*__init__*" -exec rm {} \; # make sure to be in your projects path 
- 重新创build整个数据库:
 sudo -u postgres bash -c "psql -c \"DROP DATABASE rootedin;\"" sudo -u postgres bash -c "psql -c \"CREATE DATABASE rootedin;\"" sudo -u postgres bash -c "psql -c \"GRANT ALL PRIVILEGES ON DATABASE rootedin to vagrant;\"" # vagrant is my current user 
- 让你的数据库最新:
 python3 manage.py makemigrations python3 manage.py migrate