Django“Model class<class>在拆分模型后不声明显式的app_标签,并且不在已安装的APPS中的应用程序中”

2024-06-08 12:02:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了这个错误,我已经尝试了好几个小时来修复它,当我将models.py分离到一个包含多个文件的目录中时,它出现了

这是我项目的当前结构。我省略了许多文件,但这些是相关的文件:

  • 项目文件夹
    • 学院
      • 附件1
      • 附件2
        • manage.py
        • 模型
          • __uinit uuy.py
          • content.py
          • session.py
      • 附件3
    • 配置
    • 静止的

以前,我将所有模型放在app2中的一个文件中,名为models.py。但是,由于文件开始变得太大,我将每个模型分为不同的类别。此外,在__init__.py中,我导入了以下元素:

from academy.app2.models.content import *
from academy.app2.models.session import *

现在,当我像往常一样尝试使用python manage.py makemigrations app2进行迁移时,我遇到了以下错误:

RuntimeError: Model class app2.models.content.Reward doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

当我搜索这个错误时,我遇到了this answer,但是,当我添加声明app_标签的元类时,我得到了这个错误:

RuntimeError: Conflicting 'reward' models in application 'app2': <class 'academy.app2.models.content.Reward'> and <class 'app2.models.content.Reward'>.

这是我的app2配置文件:

class App2Config(AppConfig):
    name = 'academy.app2'

这是我安装的应用程序:

INSTALLED_APPS = [
    ...
    'academy.app2.apps.App2Config',
    ...
]

当我有一个models.py文件时,这个错误并没有发生,但当我将它分割成不同的文件时,这个错误就发生了。我还尝试创建一个附加的基本模型,并在该模型中定义元类,在其余模型中继承,但没有成功


Tags: 文件项目inpy模型附件managemodels
1条回答
网友
1楼 · 发布于 2024-06-08 12:02:19

经过多次尝试,我找到了解决问题的方法:

首先,我将__init.py__编辑为以下语法:

from .content import *
from .session import *
from .system import *

此外,我将导入从一个文件更新到另一个文件,从app2.models.file格式更新为:academy.app2.models.file

没有必要添加基类。我现在能够正确运行迁移。我希望这对某人有帮助

相关问题 更多 >