我试图使用makemigrations命令在现有的应用程序中创建迁移,但它输出“未检测到更改”。
通常我使用startapp命令创建新的应用程序,但在创建这个应用程序时没有使用它。
调试后,我发现它没有创建迁移,因为迁移包/文件夹从应用程序中丢失。
如果文件夹不存在或者我遗漏了什么,如果它创建文件夹会更好吗?
我试图使用makemigrations命令在现有的应用程序中创建迁移,但它输出“未检测到更改”。
通常我使用startapp命令创建新的应用程序,但在创建这个应用程序时没有使用它。
调试后,我发现它没有创建迁移,因为迁移包/文件夹从应用程序中丢失。
如果文件夹不存在或者我遗漏了什么,如果它创建文件夹会更好吗?
当前回答
这可以通过下面提到的两个步骤来完成。
将你的应用添加到settings.py > INSTALLED_APPS 打开admin.py
from .models import upImg
# Register your models here.
admin.site.register(upImg)
注意:将upImg替换为models.py中定义的className
在此之后,查看是否仍然有python manage.py makemigrations。如果有,也执行python manage.py migrate。
更多信息请参考django教程。
其他回答
在创建一个名为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
我读过很多关于这个问题的答案,通常都是简单地用其他方式进行移民。但对我来说,问题在于模型的Meta子类。
我有一个应用程序配置,说label = <应用程序名称>(在apps.py文件,旁边的models.py, views.py等)。如果你的元类没有与应用标签相同的标签(例如,因为你把一个太大的应用拆分成多个),就不会检测到任何变化(也不会有任何有用的错误消息)。所以在我的模型类中,我现在有:
class ModelClassName(models.Model):
class Meta:
app_label = '<app name>' # <-- this label was wrong before.
field_name = models.FloatField()
...
运行Django 1.10。
确保你的应用在settings.py中的installed_apps中被提及 确保建模类扩展了模型。模型
我有一个属性与我试图用makemigrations添加的字段同名。
操作方法:
1 .
确保你的应用必须包含在settings.py中的INSTALLED_APPS中
零食 : 2
python manage.py makemigrations <appname>
如果相同的消息显示(未检测到更改)
这对你的项目来说是非常危险的,所以在应用这个方法之前,请确保你的项目有备份。
方法2
重命名您的应用程序名称,并使用:
django-admin startapp <appname>
复制除旧应用程序之外的所有.py文件
迁移文件夹 pycache文件夹 init.py Test.py文件,如果您没有在其中编写代码
并粘贴到你最近制作的新应用程序中
记住,你必须为新应用程序创建完全相同的名称,否则你必须在项目中进行更多更改。