我试图使用makemigrations命令在现有的应用程序中创建迁移,但它输出“未检测到更改”。
通常我使用startapp命令创建新的应用程序,但在创建这个应用程序时没有使用它。
调试后,我发现它没有创建迁移,因为迁移包/文件夹从应用程序中丢失。
如果文件夹不存在或者我遗漏了什么,如果它创建文件夹会更好吗?
我试图使用makemigrations命令在现有的应用程序中创建迁移,但它输出“未检测到更改”。
通常我使用startapp命令创建新的应用程序,但在创建这个应用程序时没有使用它。
调试后,我发现它没有创建迁移,因为迁移包/文件夹从应用程序中丢失。
如果文件夹不存在或者我遗漏了什么,如果它创建文件夹会更好吗?
当前回答
好吧,我相信你还没有设置模型,那么它现在迁移了什么?
所以解决方案是设置所有变量和设置Charfield, Textfield.......然后迁移它们,就会成功。
其他回答
我知道这是一个老问题,但我一整天都在和这个问题斗争,我的解决方法很简单。
我的目录结构是这样的……
apps/
app/
__init__.py
app_sub1/
__init__.py
models.py
app_sub2/
__init__.py
models.py
app_sub3/
__init__.py
models.py
app2/
__init__.py
app2_sub1/
__init__.py
models.py
app2_sub2/
__init__.py
models.py
app2_sub3/
__init__.py
models.py
main_app/
__init__.py
models.py
因为所有其他模型,直到我有一个问题,被导入到其他地方,最终从main_app导入,这是在INSTALLED_APPS注册的,我只是很幸运,他们都工作。
但是,由于我只将每个应用程序添加到INSTALLED_APPS,而不是app_sub*,当我最终添加一个新的模型文件时,没有导入到其他任何地方,Django完全忽略了它。
我的修复是添加一个models.py文件到每个应用程序的基本目录,就像这样…
apps/
app/
__init__.py
models.py <<<<<<<<<<--------------------------
app_sub1/
__init__.py
models.py
app_sub2/
__init__.py
models.py
app_sub3/
__init__.py
models.py
app2/
__init__.py
models.py <<<<<<<<<<--------------------------
app2_sub1/
__init__.py
models.py
app2_sub2/
__init__.py
models.py
app2_sub3/
__init__.py
models.py
main_app/
__init__.py
models.py
然后从apps。app中添加。App_sub1 import *,以此类推到每个应用级models.py文件。
在那里……我花了很长时间才弄明白,我在任何地方都找不到解决方案……我甚至翻到了谷歌结果的第二页。
希望这能帮助到一些人!
你能做的最好的事情是,删除现有的数据库。在我的情况下,我使用phpMyAdmin SQL数据库,所以我手动删除创建的数据库在那里。
删除后: 我在PhpMyAdmin创建数据库,不添加任何表。
再次执行以下命令:
Python manage.py makemigrations
Python manage.py迁移
在这些命令之后:你可以看到django已经自动在数据库中创建了其他必要的表(大约有10个表)。
Python manage.py makemigrations <app_name>
Python manage.py迁移
最后:在以上命令之后,您所创建的所有模型(表)都直接导入到数据库中。
希望这能有所帮助。
我的问题(以及解决方案)与上面描述的不同。
我没有使用models.py文件,而是创建了一个models目录,并在那里创建了my_model.py文件,我把我的模型放在那里。Django找不到我的模型,所以它写道没有迁移可以应用。
我的解决方案是:在my_app/models/__init__.py文件中,我添加了这一行: 导入MyModel
要为应用程序创建初始迁移,请运行makemigrations并指定应用程序名称。迁移文件夹将被创建。
./manage.py makemigrations <myapp>
你的应用必须首先包含在INSTALLED_APPS中(在settings.py内部)。
试着在admin.py中注册你的模型,这里有一个例子:- admin.site.register (YourModelHere)
您可以做以下事情:- 1. admin.site.register(YourModelHere) # 2. 重新加载页面并重试 3.点击CTRL-S并保存 4. 可能有错误,特别检查models.py和admin.py 5. 或者,在结束时重新启动服务器