Django:无法从外部项目导入models.py中的模型

时间:2019-02-07 00:17:32

标签: python django django-models

我正在尝试在Django项目文件夹之外定义一些Django模型(我只是在使用没有Web应用程序功能的Django ORM功能),然后将它们导入到Django项目中应用程序的models.py中。

我知道可以通过创建模型包,包含多个定义模型的模块并将其导入__init__.py来“拆分” models.py,所以我认为这样做的方式相同。

目录结构类似于:

- root
  - tasks
    - taskA
      - models.py
    - taskB 
      - models.py
  - orm
    - apps
      - app1
        - models.py
        - base_models.py
        - apps.py
      - app2
        - models.py
        - base_models.py
        - apps.py
    - manage.py
    - settings.py

基本上,Django应用对模型的类型进行了分类(在appX.base_models.py中定义了抽象基础模型),任务定义并使用了自己的不同模型类型的版本/子类,然后将其导入到django应用程序models.py由Django管理

例如:

root.orm.apps.app1.models.py中:

from root.tasks.taskA.models import ModelType1A
from root.tasks.taskB.models import ModelType1B

但是我尝试启动一个任务(调用django.setup())或manage.py makemigrations,我得到:

  

RuntimeError:模型类root.tasks.taskA.models.ModelType1A没有声明显式的app_label,并且不在INSTALLED_APPS中的应用程序中

是的,这些应用程序包含在INSTALLED_APPS中(这是从root.orm.apps.app1.models.py导入的,这会导致错误,因此Django正在检测该应用程序并尝试获取其模型,但似乎没有从外部项目或其他项目中导入时识别它们。

有什么办法可以使这项工作成功吗?

欢呼

0 个答案:

没有答案