2012-11-27 96 views
0

導入我的Django應用程序(可以稱之爲app)我有很多的文件:views.pymodels.py和我創建了自己utils.py的Django無法從應用程序/ models.py

不幸的是,雖然我可以包括我在我的views.py文件模型簡單地說

from models import *

在我utils.py文件,如果我嘗試同樣的事情,然後用一個模型,我得到一個例外Global name: MyModel is not definedmodels.py確實包括utils.py,我知道這可能是一個循環依賴,但它運行良好,直到我添加了最近的更改。這是否是原因,如果是重構我的utils文件的唯一解決方案?

回答

1

那麼你已經知道這是因爲相互依賴。解決這個問題的方法是將util文件分成兩部分,這樣可以通過分隔需要調用模型的部分來避免循環導入。

此外,作爲建議的Mipadi而是採用了全球import語句,你可以簡單地使該法範圍內的進口

而且,它真的取決於你如何試圖使用模型。例如,您可以通過「app_name.class_name」訪問模型,但實際上取決於您想要使用的上下文。

+2

或'utils'可以在一個較窄的範圍(比如在函數中)導入'models'以避免循環依賴問題。 – mipadi

+0

哦,是的..要提到這一點 –