2017-10-15 89 views
0

我有一个包含两个应用程序的django项目,我也希望通过Heroku的作业调度工具来处理一些常规数据库操作。Django在非应用程序包中导入应用程序模型

为了处理预定作业的任务,我在我的顶级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框架之外使用它们。

+0

做你试试:'sys.path.append(CWD + '../myapp1/')#注意失踪slash' 或直接从'进口..myapp1型号#注双点syntax'? – efkin

回答

1

,你应该能够使用intra-package references

为:

from ..myapp1 import models 

从文档:

与Python 2.5开始,除了上述的隐含相对进口,您可以使用import语句的from模块import name形式编写显式相对导入。这些显式相对导入使用前导点来指示相关导入中涉及的当前和父包。

+0

我遇到的问题是顶层目录不是python包。我可以在里面放一个'__init __。py'文件,但看起来有点乱七八糟...... – Luke

+1

它只是一个空文件...它不能伤害任何人:) – efkin

+0

得到它的工作。谢谢。 – Luke

相关问题