0
のためにDjangoのCheckboxSelectMultipleウィジェットをオーバーライド:は恐ろしいブートストラップチェックボックス
class StrategiesForm(forms.Form):
letters = MultipleChoiceField(
choices=((0, 'a'),(1, 'b'),(2, 'c')),
label="a_label",
required=True,
widget=CheckboxSelectMultiple(),
)
私が取得:
<label for="id_letters_0">a_label:</label>
<ul id="id_letters">
<li>
<label for="id_letters_0">
<input id="id_letters_0" name="letters" type="checkbox" value="0"> a
</label>
</li>
<li>
<label for="id_letters_1">
<input id="id_letters_1" name="letters" type="checkbox" value="1"> b
</label>
</li>
<li>
<label for="id_letters_2">
<input id="id_letters_2" name="letters" type="checkbox" value="2"> c
</label>
</li>
</ul>
これは、基本的には、ラベルに埋め込まれた入力の束でありますこれらはリストアイテムに埋め込まれています。
Awesome Bootstrap Checkboxesの場合、レイアウトを少し変更する必要があります。具体的には、入力はその中にないラベルの上になければなりません。また、入力とラベルの両方を、li
ではなく、「checkbox checkbox-primary」クラスのdiv
にラップする必要があります。
上記の例では、これは次のようになります。
<label for="id_letters_0">a_label:</label>
<div id="id_letters">
<div class="checkbox checkbox-primary">
<input id="id_letters_0" name="letters" type="checkbox" value="0"> a
<label for="id_letters_0"></label>
</div>
<div class="checkbox checkbox-primary">
<input id="id_letters_1" name="letters" type="checkbox" value="1"> b
<label for="id_letters_1"></label>
</div>
<div class="checkbox checkbox-primary">
<input id="id_letters_2" name="letters" type="checkbox" value="2"> c
<label for="id_letters_2"></label>
</div>
</div>
私は、好ましくは、Djangoの既存を上書き、新しいウィジェットを定義することによってこれを実現するにはどうすればよいですか?
私もジャンゴ・bootstrap3アプリを使用しています。上記のウィジェットがうまくいけばうまくいくでしょう。 – mehmet