2011-09-08 29 views
2

私は私のフォームの1つでモデル選択フィールドを使用しています。モデルの属性の値に基づいて各オプションにCSSクラスを追加したいと思います。Django - ModelChoiceFieldの個々の行にクラスを追加しますか?

これを行う簡単な方法はありますか?

アドバイスありがとうございます。

ありがとうございました。

答えて

2

つのオプション:

  1. あなたは繰り返し処理{{form.field_name.choices}}とクラスを生成し、テンプレートの中で自分自身を選択するレンダリングする必要があります。

  2. django.forms.widgets.Selectを拡張し、render_option()メソッドをオーバーライドするカスタムウィジェットを作成します。たとえば、実装方法については、render_option() in django's sourceを参照してください。フォームのウィジェットをフィールドのウィジェットとして使用します。

    djangoのスニペットでは、同様のもの(その場合は無効になっているオプション)の別の例を見ることができます:Allow disabling options in a select widget

IMO第2のオプションはよりクリーンです:再利用可能で、テンプレートを使いこなす必要はありません。

関連する問題