我试图使用makemigrations命令在现有的应用程序中创建迁移,但它输出“未检测到更改”。

通常我使用startapp命令创建新的应用程序,但在创建这个应用程序时没有使用它。

调试后,我发现它没有创建迁移,因为迁移包/文件夹从应用程序中丢失。

如果文件夹不存在或者我遗漏了什么,如果它创建文件夹会更好吗?


当前回答

还有一个边缘情况和解决方案:

我添加了一个布尔字段,同时添加了一个@属性引用它,具有相同的名称(doh)。注释属性和迁移看到并添加新字段。重新命名财产,一切都很好。

其他回答

在创建一个名为deals的新应用程序时,我遇到了一个不同的问题。我想在应用程序中分离模型,所以我有两个模型文件,分别命名为deals.py和dealers.py。 当运行python manage.py makemigrations时,我得到:未检测到变化。

我继续,在__init__.py中,它位于与我的模型文件(deals和dealer)相同的目录中

from .deals import *
from .dealers import *

然后makemigrations命令起作用了。

事实证明,如果你没有在任何地方导入模型,或者你的模型文件名不是models.py,那么模型就不会被检测到。

发生在我身上的另一个问题是我在settings.py中编写应用程序的方式:

我有:

apps.deals

它应该包括根项目文件夹:

cars.apps.deals

要为应用程序创建初始迁移,请运行makemigrations并指定应用程序名称。迁移文件夹将被创建。

./manage.py makemigrations <myapp>

你的应用必须首先包含在INSTALLED_APPS中(在settings.py内部)。

可能的原因是删除了现有的db文件和migrations文件夹 你可以使用python manage.py makemigrations <app_name>这应该可以工作。我曾经遇到过类似的问题。

我这样解决了这个问题:

Erase the "db.sqlite3" file. The issue here is that your current data base will be erased, so you will have to remake it again. Inside the migrations folder of your edited app, erase the last updated file. Remember that the first created file is: "0001_initial.py". For example: I made a new class and register it by the "makemigrations" and "migrate" procedure, now a new file called "0002_auto_etc.py" was created; erase it. Go to the "pycache" folder (inside the migrations folder) and erase the file "0002_auto_etc.pyc". Finally, go to the console and use "python manage.py makemigrations" and "python manage.py migrate".

django在执行makemigrations命令时没有检测到要迁移的内容有多种可能的原因。

migration folder You need a migrations package in your app. INSTALLED_APPS You need your app to be specified in the INSTALLED_APPS .dict Verbosity start by running makemigrations -v 3 for verbosity. This might shed some light on the problem. Full path In INSTALLED_APPS it is recommended to specify the full module app config path 'apply.apps.MyAppConfig' --settings you might want to make sure the correct settings file is set: manage.py makemigrations --settings mysite.settings specify app name explicitly put the app name in manage.py makemigrations myapp - that narrows down the migrations for the app alone and helps you isolate the problem. model meta check you have the right app_label in your model meta Debug django debug django core script. makemigrations command is pretty much straight forward. Here's how to do it in pycharm. change your script definition accordingly (ex: makemigrations --traceback myapp)

多个数据库:

当使用django的Db Router时,Router类(你的自定义Router类)需要实现allow_syncdb方法。

Makemigrations总是为模型更改创建迁移,但是如果 allow_migrate()返回False,