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

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

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

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


当前回答

更新:在尝试之前,应该确保migrations文件夹中存在__init__.py文件:

./manage.py makemigrations <myapp1> <myapp2>…< myappN >


有时。/manage.py makemigrations优于。/manage.py makemigrations <myapp>,因为它可以处理应用程序之间的某些冲突。

这些情况都是悄无声息地发生的,需要几个小时的咒骂才能理解可怕的“检测到没有变化”消息的真正含义。

因此,使用下面的命令是一个更好的选择:

./manage.py makemigrations <myapp1> <myapp2>…< myappN >

其他回答

你应该将polls.apps.PollsConfig添加到setting.py中的INSTALLED_APPS中

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

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

我忘记写正确的论点了

class LineInOffice(models.Model):   # here
    addressOfOffice = models.CharField("Корхоная жош",max_length= 200)   #and here
    ...

在models.py 然后就不那么烦人了

在应用程序“myApp”中未检测到任何变化

我在django 3.0中遇到了类似的问题,根据官方文档中的迁移部分,运行这个足够更新我的表结构:

python manage.py makemigrations
python manage.py migrate

但是输出总是一样的:在我执行'makemigrations'脚本后,我的模型'未检测到变化'。 我在models.py的模型上有一个语法错误,我想在db上更新:

field_model : models.CharField(max_length=255, ...)

而不是:

field_model = models.CharField(max_length=255, ...)

解决了这个愚蠢的错误,有了这些命令,迁移就没有问题了。也许这能帮到别人。

你能做的最好的事情是,删除现有的数据库。在我的情况下,我使用phpMyAdmin SQL数据库,所以我手动删除创建的数据库在那里。

删除后: 我在PhpMyAdmin创建数据库,不添加任何表。

再次执行以下命令:

Python manage.py makemigrations

Python manage.py迁移

在这些命令之后:你可以看到django已经自动在数据库中创建了其他必要的表(大约有10个表)。

Python manage.py makemigrations <app_name>

Python manage.py迁移

最后:在以上命令之后,您所创建的所有模型(表)都直接导入到数据库中。

希望这能有所帮助。