Django 1.8:为现有模式创建初始迁移

use*_*018 72 django django-migrations

我启动了一个使用迁移系统的django 1.8项目.
在某种程度上事情变得混乱,所以我从数据库中删除了迁移文件夹和表,现在我正在尝试重建它们,但没有成功.

我有三个应用程序(3个models.py文件),模型完全反映了表格!

到目前为止我发现的最佳方法是:

  1. 删除所有migrations文件夹.完成!
  2. django_migrations表中删除所有内容.完成!
  3. python manage.py makemigrations --empty <app>为每个应用运行.完成!
  4. python manage.py migrate --fake.完成!(虽然只有在每次makemigrations命令后运行它才有效.

现在我添加一个新字段,运行该makemigrations命令,我收到以下错误:
django.db.utils.OperationalError: (1054, "Unknown column 'accounts_plan.max_item_size' in 'field list'")

我一直在烧这个东西.我怎样才能初始化迁移,这样我每次都可以继续工作而不会发生迁移中断?

为什么这么复杂?为什么没有简单的单行:initiate_migrations_from_schema

编辑:
现在事情变得更加糟糕.我截断了django_migrations表并删除了所有migrations文件夹.
现在我尝试运行python manage.py migrate --fake-initial(我在DEV文档中找到的东西),这样就设置了所有Django的"内部"应用程序(auth,session等),我得到了:
(1054, "Unknown column 'name' in 'django_content_type'").
现在,这个"专栏"不是一个真正的专栏.它是@propertyDjango contenttypes应用程序中定义的.这里发生了什么?为什么将该name属性识别为真正的列?

use*_*018 165

最后让它工作,虽然我不知道为什么,我希望它将来会有用.
经过多次试验并通过Django的开发站点(链接).
以下是步骤(对于遇到此问题的人):

  1. 清空django_migrations桌子:delete from django_migrations;
  2. 对于每个应用,删除其migrations文件夹:rm -rf <app>/migrations/
  3. 重置"内置"应用的迁移: python manage.py migrate --fake
  4. 对于每个应用程序运行:python manage.py makemigrations <app>.处理依赖关系(具有ForeignKey的模型应该在其父模型之后运行).
  5. 最后: python manage.py migrate --fake-initial

之后我运行了没有--fake-initial标志的最后一个命令,只是为了确保.

现在一切正常,我可以正常使用迁移系统.

我确信我不是唯一遇到这个问题的人.必须更好地记录,甚至简化.

Django 1.9用户的更新:
我再次使用Django 1.9.4这个场景,第5步失败了.
所有我必须做的是替换--fake-initial--fake,使其工作.

  • 应记录在"如何重置迁移"下.甚至可能是reset_migrations管理命令 (8认同)