Bootstrapを使用してBooleanfieldチェックボックスがchricpy_formsで正しくレンダリングされません
-
20-12-2019 - |
質問
CRICY_FORMSとFORMHELPERを使用しています。
として宣言されたモデルフィールドがあります。active = models.BooleanField(default=True)
.
と私のモデル形式では、私のレイアウトで次の両方を試してみました:
self.helper.layout = Layout(
...
InlineCheckboxes('active'),
Field('active'),
...
.
どちらも望ましい結果を提供していない:
InlineCheckBoxを使用している間、チェックボックスとフィールドのみを使用していないため、正しくフォーマットされていません。
助けてください
解決
これは link Crispy Forms Docsの「ブートストラップレイアウトオブジェクト」のセクションに。
inlinecheckboxes :インラインチェックボックスを使用してDjango Forms.MultipleChoiceFieldフィールドをレンダリングする
InLineCheckBoxは、モデルのフィールドタイプには適していません。
あなたが探しているものを達成するためのハッキーな方法は、PrependedText
引数の空の文字列を持つtext
を使用することです。
...
PrependedText('active', ''),
...
.
ソースの調べて、デフォルトでブールフィールドが<input>
タグ内の<label>
タグをレンダリングするように見えます。上記のハックを使用すると、 'Active'が<label>
に留まり、<input>
が期待する場所に置かれます。 "Control" CSSクラスを備えた<div>
。以下を比較してください。
PrependedText('active', '')
:
<div id="div_id_active" class="form-group">
<label for="id_active" class="control-label">Active</label>
<div class="controls">
<div class="input-group">
<input type="checkbox" name="active" class="checkboxinput" id="id_active" />
</div>
</div>
</div>
.
Field('active')
:
<div class="form-group">
<div id="div_id_active" class="checkbox">
<div class="controls">
<label for="id_active" class=""><input type="checkbox" name="active" class=
"checkboxinput checkbox" id="id_active" /> Active</label>
</div>
</div>
</div>
.
更新
これは、Django-crespy-formsのDEVブランチに固定されていることを確認しました。
リファレンスこのコミット: 5C3A268
所属していません StackOverflow