2017-10-15 43 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

相關問題