没有可应用的迁移,尽管有迁移可用

0 投票
1 回答
556 浏览
提问于 2025-04-27 22:57

我在我的示例 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 的子类,具体可以参考文档

撰写回答