2011-01-06 5 views
0

プロファイルがUserProfileのユーザーモデルがあります。 何とか私のユーザは、TA、TB、TC、TDのようないくつかのタイプの本を持つことができます。 これらの選択肢は、私のモデルの選択タプルで定義されています(標準的な方法)。Djangoのメタプログラミングget_foo_display、foo_setなど、どのように動作しますか?

私のテンプレートから、私は

{{ user.get_profile.has_book_type_TA }} 

とFalse/Trueを返すを呼び出すことができるようにしたいと思います。私は私のモデルではこのような方法を書くことができますどのように[タイプ名]

has_book_type_:

TAが動的部分であり、それは以下のように書き換えることができますか?

def has_book_type_(self, type_name): 
    ... 

しかし、どのように、あなたのモデルの__init__方法でget_profile.has_book_type_TA

答えて

2

として、それが呼び出し可能にする本の異なる種類の中を歩くとプロパティを作成する方法:あなたのに続いて

for book_type in BOOK_TYPES: 
    setattr(self, 'has_book_type_%s' % book_type, self.has_book_type_(book_type)) 

をテンプレート、user.get_profile.has_book_type_TAをチェックするとうまくいくはずです。

関連する問題