我遇到了这个错误,我已经尝试了好几个小时来修复它,当我将models.py分离到一个包含多个文件的目录中时,它出现了
这是我项目的当前结构。我省略了许多文件,但这些是相关的文件:
以前,我将所有模型放在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文件时,这个错误并没有发生,但当我将它分割成不同的文件时,这个错误就发生了。我还尝试创建一个附加的基本模型,并在该模型中定义元类,在其余模型中继承,但没有成功
经过多次尝试,我找到了解决问题的方法:
首先,我将
__init.py__
编辑为以下语法:此外,我将导入从一个文件更新到另一个文件,从
app2.models.file
格式更新为:academy.app2.models.file
没有必要添加基类。我现在能够正确运行迁移。我希望这对某人有帮助
相关问题 更多 >
编程相关推荐