我试图使用makemigrations命令在现有的应用程序中创建迁移,但它输出“未检测到更改”。
通常我使用startapp命令创建新的应用程序,但在创建这个应用程序时没有使用它。
调试后,我发现它没有创建迁移,因为迁移包/文件夹从应用程序中丢失。
如果文件夹不存在或者我遗漏了什么,如果它创建文件夹会更好吗?
我试图使用makemigrations命令在现有的应用程序中创建迁移,但它输出“未检测到更改”。
通常我使用startapp命令创建新的应用程序,但在创建这个应用程序时没有使用它。
调试后,我发现它没有创建迁移,因为迁移包/文件夹从应用程序中丢失。
如果文件夹不存在或者我遗漏了什么,如果它创建文件夹会更好吗?
当前回答
另一种可能是您压缩了一些迁移并应用了结果迁移,但忘记从其中删除replace属性。
其他回答
首先,确保你的应用已经在setting.py中的Installed_app中注册了 那么上面的答案就完全正确了
确保你的应用在settings.py中的installed_apps中被提及 确保建模类扩展了模型。模型
如果你在你的模型Meta中有managed = True,你需要删除它并进行迁移。然后再次运行迁移,它将检测到新的更新。
我在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迁移
最后:在以上命令之后,您所创建的所有模型(表)都直接导入到数据库中。
希望这能有所帮助。