没有可应用的迁移,尽管有迁移可用
我在我的示例 Django 项目中,使用模型应用时遇到了麻烦,无法正确应用迁移。我按照这个帖子的建议操作,但还是不行。
我觉得这个示例项目和上面链接中的项目有个不同之处,就是我的模型存放在自己的应用中,而且每个模型都有单独的文件。
我可以顺利地运行 makemigration
,但是当我尝试运行 migrate
来应用这些更改时,Django 却说没有可以应用的迁移,尽管在模型应用中确实有一个迁移文件。
以下是我的项目结构:
| db.sqlite3
| manage.py
|
+---project
| settings.py
| urls.py
| wsgi.py
| __init__.py
|
+---main
| | admin.py
| | forms.py
| | tests.py
| | urls.py
| | views.py
| | __init__.py
| |
| +---migrations
| | __init__.py
| |
| +---static
| \---templates
| \---main
| login.html
| register.html
|
+---models
| | answer.py
| | application.py
| | apps.py
| | business.py
| | group.py
| | question.py
| | user.py
| | __init__.py
| |
| \---migrations
| 0001_initial.py
| __init__.py
|
\---templates
\---_layouts
base.html
我感到很困惑,找不到 Django 为什么不能应用它自己生成的迁移的原因。
提前谢谢你们。
更新:
我按照 Daniel 的建议,在模型的应用中添加了一个 'apps.py' 文件,并使用了子类化的 AppConfig,但结果还是一样。下面是修改后的 .py 代码:
apps.py:
from django.apps import AppConfig
class ModelsConfig(AppConfig):
name = 'models'
verbose_name = "Models"
init.py 文件用于模型应用:
from user import UserModel
from business import BusinessModel
from application import ApplicationModel
from group import GroupModel
from question import QuestionModel
from answer import AnswerModel
default_app_config = 'models.apps.ModelsConfig'
1 个回答
0
你在这个应用里没有实际的 models.py 文件,所以 Django 不知道要把它当成一个模型文件来处理。从 Django 1.7 开始,这种情况是被允许的,但你还是需要一个 AppConfig 的子类,具体可以参考文档。