2012-10-16 97 views
9

我想在一般函數中獲取文檔屬性,但少數模型可能沒有文檔屬性。有什麼辦法可以首先檢查模型是否具有文檔屬性,然後有條件地運行代碼?Django如何檢查對象是否有視圖屬性

if self.model has property documents: 
     context['documents'] = self.get_object().documents.() 
+0

爲什麼你曾經使用過一個沒有它的模型? –

+0

我有通用視圖,它顯示單個模板中的所有模型。起初我沒有任何文件,但現在很少有文件附加。所以我想如果有方法來檢查其他方式,我需要用90%相同的代碼來定義新的視圖。對於hackish的解決方案,我用try和except做了一個函數,這樣我就不會在網站中出現任何錯誤,但是正在尋找合適的方式 – user825904

+0

爲什麼你沒有模型告訴它應該使用哪個視圖,並且有一個理智的默認值? –

回答

24

您可以使用hasattr()來檢查模型是否具有文檔屬性。

if hasattr(self.model, 'documents'): 
    doStuff(self.model.documents) 

然而,this answer指出,有些人覺得「比較容易請求原諒比許可」的做法是更好的做法。

try: 
    doStuff(self.model.documents) 
except AttributeError: 
    otherStuff() 
相關問題