Django makemigrations希望删除它刚创建的所有内容

时间:2016-03-16 18:52:17

标签: django migration

我刚刚遵循了这个程序:

  • makemigrations(成功)
  • migrate(成功)
  • 将应用程序复制到另一台服务器上(使用迁移文件)
  • 在该服务器上创建一个新的空数据库
  • migrate(成功,它会创建正确的架构)
  • 使用数据填充新数据库
  • 只是为了测试:migrate ....

此时Django说我有"changes that are not yet reflected in a migration, and so won't be applied. Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them"

但是当我运行makemigrations时,它会创建一个想要"删除字段"每个外键和"删除模型"我所有的模特。如果我运行它会清空我的数据库。我的models.py完好无损。

发生了什么事?

2 个答案:

答案 0 :(得分:2)

我的项目遇到了同样的问题。向前跑我可以说django删除了没有导入的模型(进行删除模型迁移)。文档说明您应该在myApp/models/__init__.py文件中导入模型(参见https://docs.djangoproject.com/en/1.11/topics/db/models/#organizing-models-in-a-package)。

在我的情况下,我将模型导入到某处以进行操作,但模型已在其他地方移除。

我在admin.py文件中做了一个无用的导入,解决了我的情况(我没有尝试按照文档将其导入__init__.py,但确定它应该有帮助) 。 我还没有意识到为什么它会这样工作(希望有人能注意到这一刻)并希望这个解决方案能帮到你。

答案 1 :(得分:0)

我刚刚遇到了同样的错误,但在尝试makemigrations命令之前,我点击migrate构建了一个充满了删除字段和删除模型命令的迁移。

在我的情况下,解决方案与此相关,这是我正在复活的旧项目,它设置了许多Model.Meta.app_name值,以及每个项目的apps.py中的条目。这些现在与设置解释项目的方式相冲突,即使我的模型已导入到视图和管理员中,迁移代码也看不到它们。删除模型上的这些app_name标签,并在apps.py中修改AppConfig名称解决了这个问题,以便运行makemigrations再次引起预期的更改(更改字段等),一切都很好。

我没有找到任何与我和我的经历完全匹配的问题或答案,所以我希望如果有其他人找到这个,他们会像我一样在这里找到它; - )