我试图使用makemigrations命令在现有的应用程序中创建迁移,但它输出“未检测到更改”。
通常我使用startapp命令创建新的应用程序,但在创建这个应用程序时没有使用它。
调试后,我发现它没有创建迁移,因为迁移包/文件夹从应用程序中丢失。
如果文件夹不存在或者我遗漏了什么,如果它创建文件夹会更好吗?
我试图使用makemigrations命令在现有的应用程序中创建迁移,但它输出“未检测到更改”。
通常我使用startapp命令创建新的应用程序,但在创建这个应用程序时没有使用它。
调试后,我发现它没有创建迁移,因为迁移包/文件夹从应用程序中丢失。
如果文件夹不存在或者我遗漏了什么,如果它创建文件夹会更好吗?
当前回答
当向django api应用程序添加新模型并运行python manage.py makemigrations时,工具没有检测到任何新模型。
奇怪的是,旧模型确实被makemigrations选中了,但这是因为它们在urlpatterns链中被引用,而工具以某种方式检测到了它们。所以要注意这种行为。
这个问题是因为与models包对应的目录结构有子包,并且所有__init__.py文件都是空的。它们必须显式地在每个子文件夹和__init__.py模型中导入所有必需的类,以便Django使用makemigrationations工具来获取它们。
models
├── __init__.py <--- empty
├── patient
│ ├── __init__.py <--- empty
│ ├── breed.py
│ └── ...
├── timeline
│ ├── __init__.py <-- empty
│ ├── event.py
│ └── ...
其他回答
这是一个评论,但可能应该是一个答案。
确保你的应用程序名称在settings.py INSTALLED_APPS中,否则无论你做什么,它都不会运行迁移。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
]
然后运行:
./manage.py makemigrations blog
试着在admin.py中注册你的模型,这里有一个例子:- admin.site.register (YourModelHere)
您可以做以下事情:- 1. admin.site.register(YourModelHere) # 2. 重新加载页面并重试 3.点击CTRL-S并保存 4. 可能有错误,特别检查models.py和admin.py 5. 或者,在结束时重新启动服务器
INSTALLED_APPS = [
'blog.apps.BlogConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
确保“blog.apps”。BlogConfig',(这包含在你的settings.py中,以便进行应用程序迁移)
然后运行python3 manage.py makemigrationblog或你的应用程序名
另一个可能的原因是,如果您在另一个文件中定义了一些模型(而不是在包中),并且没有在其他任何地方引用它。
对我来说,简单地从.graph_model import *添加到admin.py(其中graph_model.py是新文件)就可以解决这个问题。
另一种可能是您压缩了一些迁移并应用了结果迁移,但忘记从其中删除replace属性。