2012-10-16 10 views
9

一般的な関数でdocumentプロパティを取得しようとしていますが、いくつかのモデルではドキュメント属性がない可能性があります。モデルにdocumentプロパティがあるかどうかを確認してから条件付きでコードを実行する方法はありますか?Djangoオブジェクトがビューにプロパティを持っているかどうかをチェックする方法

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

なぜあなたはそれを持っていないモデルを使用していますか? –

+0

私は、単一のテンプレート内のすべてのモデルを表示する汎用ビューを持っています。最初は私はどんな書類も持っていませんでしたが、今のところ書類が添付されているものはほとんどありません。だから私は何かをチェックする方法があると思っていた、私は90%同じコードで新しいビューを定義する必要があります。 hackishソリューションのために私はtryで関数を作っていますが、サイトにエラーはありませんが、適切な方法を探していました。 – user825904

+0

モデルをどのようなビューで使うべきなのでしょうか? –

答えて

24

hasattr()を使用して、モデルにドキュメントプロパティがあるかどうかを確認できます。

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

しかし、this answerは、一部の人々は、「許可よりも許しを求めるしやすい」アプローチは、より良い練習で感じることを指摘しています。

try: 
    doStuff(self.model.documents) 
except AttributeError: 
    otherStuff() 
関連する問題