在同一个子目录中,如何从Django中的其他已安装应用程序访问模型?

时间:2017-03-03 18:18:05

标签: python django django-models django-views

我的项目有以下结构:

myproject/
|-- myproject/
|   |-- __init__.py
|   |-- settings.py
|   |-- urls.py
|   |-- wsgi.py
|-- apps/
|   |-- dashboard/
|   |    |-- static/
|   |    |-- templates/
|   |    |-- __init__.py
|   |    |-- admin.py
|   |    |-- apps.py
|   |    |-- forms.py
|   |    |-- models.py
|   |    |-- tests.py
|   |    |-- views.py
|   |-- data/
|   |    |-- __init__.py
|   |    |-- apps.py
|   |    |-- models.py
|   |    |-- router.py
|   |    |-- tests.py
|   |-- __init__.py
|-- manage.py

设置文件添加了以下已安装的应用:

'apps.data',
'apps.dashboard',

在主项目中,我可以从我创建的应用程序中导入没有问题。但是,仪表板应用程序依赖于数据应用程序,我似乎无法从数据应用程序导入。

urls.py导入'导入apps.dashboard.views'没有任何问题,但我尝试了很多东西将模型从数据导入仪表板。我在仪表板视图中使用了数据模型。

以下工作均无效:

from data.models import ModelName
from apps.data.models import ModelName
from .data.models import ModelName
from .apps.data.models import ModelName

我得到' ImportError:没有名为data.models的模块'无论。

在apps.py文件中,DataConfig类的名称设置为' dashboard'和'数据'。

任何人都可以解释我如何从仪表板中的数据访问模型吗?

由于

2 个答案:

答案 0 :(得分:2)

from .data.models是该文件存在的当前目录的导入 relative ,例如,它会在data内查找dashboard模块目录目录。如果您想参考相对于data模块的dashboard模块,您应该能够使用

from ..data.models import Foo

使用绝对导入取决于您的PYTHONPATH环境变量。您可以通过在Python REPL中调整sys.path来解决它。

答案 1 :(得分:1)

从我的头脑中,我可以提出一些建议:

  1. 检查您的__init__.py文件,如果它们不是空的,您将拥有 只访问其中导入的内容。
  2. 检查您是否没有进入循环导入 - 如果dashboard.modelsdata.models导入dashboard.models,则从from apps.data import models导入。
  3. from apps.data.models import ModelNamewhile a in range(0,len(vertices)): # Loop 1 for j in newdict: # Loop 2 steps+=1 #count number of times it goes through the loop print(steps) if a>=len(vertices) or steps>=100000: break #this is where my error is occurring 似乎是正确的方法 - 了解这一点寻找解决方案。