我试图使用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教程。
其他回答
操作方法:
1 .
确保你的应用必须包含在settings.py中的INSTALLED_APPS中
零食 : 2
python manage.py makemigrations <appname>
如果相同的消息显示(未检测到更改)
这对你的项目来说是非常危险的,所以在应用这个方法之前,请确保你的项目有备份。
方法2
重命名您的应用程序名称,并使用:
django-admin startapp <appname>
复制除旧应用程序之外的所有.py文件
迁移文件夹 pycache文件夹 init.py Test.py文件,如果您没有在其中编写代码
并粘贴到你最近制作的新应用程序中
记住,你必须为新应用程序创建完全相同的名称,否则你必须在项目中进行更多更改。
更新:在尝试之前,应该确保migrations文件夹中存在__init__.py文件:
./manage.py makemigrations <myapp1> <myapp2>…< myappN >
有时。/manage.py makemigrations优于。/manage.py makemigrations <myapp>,因为它可以处理应用程序之间的某些冲突。
这些情况都是悄无声息地发生的,需要几个小时的咒骂才能理解可怕的“检测到没有变化”消息的真正含义。
因此,使用下面的命令是一个更好的选择:
./manage.py makemigrations <myapp1> <myapp2>…< myappN >
另一个会导致这种情况的是字段后面的尾随逗号,这将导致在makemigrationations期间跳过字段:
class MyModel(models.Model):
name = models.CharField(max_length=64, null=True) # works
language_code = models.CharField(max_length=2, default='en') # works
is_dumb = models.BooleanField(default=False), # doesn't work
我有一个拖尾,在一行中,可能来自复制粘贴。带有is_dumb的代码行不会使用./manage.py makemigrations创建模型迁移,因为Python认为它是一个元组,而Django不认为它是一个字段。
解决方案是你必须把你的应用包含在INSTALLED_APPS中。
我错过了它,我发现了同样的问题。
在指定我的应用程序名称迁移成功
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'boards',
]
请注意,我在最后提到了boards,这是我的应用程序名称。
在我的情况下,我忘记插入类参数
错误的:
class AccountInformation():
正确的
class AccountInformation(models.Model):