2011-06-08 55 views
5

最近我將一個應用程序分成兩個獨立的應用程序,因爲我有15個以上的模型。我得到了「循環導入錯誤」。爲了解決這個問題,我試圖寫這個:試圖避免循環導入

from django.db import models 

class App1Model(models.Model): 
    app2model = models.ForeignKey(app2.App2Model) 

我得到的錯誤是:「NameError:name'app2'未定義」。但是app2被正確地添加到已安裝的應用程序中並放入路徑中。

project 
    -app1 
     --models.py 
    -app2 
     --models-py 

回答

13

ForeignKey可以接受字符串作爲參數,即models.ForeignKey('app2.App2Model')。當然,你應該嘗試設計你的代碼,以避免任何循環依賴。

+0

但如果你somehwere需要的型號在代碼中會發生什麼。我有足夠的功能需要一個或另一個模型的功能? – 2014-10-17 06:53:14

+1

@HansdeJong不要做循環關係。如果您確實需要,可以使用'get_model'或函數級別的導入。 – 2014-10-17 14:49:45

1

你應該還需要一個import語句

import app2.App2Model 

但是,如果APP 2進口APP1像你提到,你會得到一個錯誤。

2

我與貓加再加同意有關設計代碼以避免循環依賴,但你不應該能夠:

try: 
    import app.model 
except ImportError: 
    pass 
+0

哈克。但在一個捏,它的作品..!謝謝 – awidgery 2013-09-23 09:57:39