我试图使用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. 或者,在结束时重新启动服务器