Django在非应用程序包中导入应用程序模型

时间:2017-10-15 13:03:00

标签: python django

我有一个带有两个应用程序的django项目,我还希望通过Heroku的作业调度工具进行预定作业,这些工具可以处理一些常规的数据库操作。

为了处理预定作业的任务,我在顶级django项目文件夹中有一个单独的包。此软件包需要访问我的应用程序中定义的模型。但是,我无法找到如何从我的应用程序导入模型。

结构如下:

myproject
|
|  myproject
|  |  __init__.py
|  |  ...
|  myapp1
|  |  __init__.py
|  |  models.py
|  |  ...
|  myapp2
|  |  __init__.py
|  |  models.py
|  |  ...
|  customjobmodule
|  |  __init__.py
|  |  ...
|  ...

我尝试了几种使用sys.path.append()导入的方法,但它们似乎都不起作用。他们都说没有名为myapp1.models的模块

import os

import sys

cwd = os.getcwd()

sys.path.append(cwd + '/../myapp1/')

from myapp1.models import Model1


ImportError: No module named myapp1.models

有办法做到这一点吗?在搜索时我发现了很多关于在django应用程序之间使用模型的信息,但是没有在django框架之外使用它们。

1 个答案:

答案 0 :(得分:2)

您应该可以使用intra-package references

如:

from ..myapp1 import models

来自文档:

  

从Python 2.5开始,除了上面描述的隐式相对导入之外,您还可以使用import语句的from module import name形式编写显式相对导入。这些显式相对导入使用前导点来指示相对导入中涉及的当前和父包。