我刚刚遵循了这个程序:
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
完好无损。
发生了什么事?
答案 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
再次引起预期的更改(更改字段等),一切都很好。
我没有找到任何与我和我的经历完全匹配的问题或答案,所以我希望如果有其他人找到这个,他们会像我一样在这里找到它; - )