Bootstrapを使用してBooleanfieldチェックボックスがchricpy_formsで正しくレンダリングされません

StackOverflow https://stackoverflow.com//questions/22002861

質問

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

とこのGithubの問題:#267

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top