布尔字段复选框在使用引导程序crispy_forms时无法正确呈现



我正在使用crispy_forms和FormHelper。我有一个模型字段声明为:

active = models.BooleanField(default=True)
在我的

模型表单中,我已经在我的布局中尝试了以下两种方法:

    self.helper.layout = Layout(
                    ...
        InlineCheckboxes('active'),
        Field('active'),
                    ...

两者都没有提供所需的结果:

请参阅图片链接

使用

内联复选框时,我没有看到复选框,并且仅使用字段,它的格式不正确。

请帮忙

这是Crispy Forms文档的"Bootstrap Layout对象"部分的链接。

内联复选框:它呈现一个 Django 表单。使用内联复选框的"多项选择字段"字段

内联复选框不适用于模型的字段类型。


实现所需内容的一种黑客方法是将PrependedText与空字符串一起使用text参数。

...
PrependedText('active', ''),
...

检查源时,似乎默认情况下,布尔字段在<label>标记内呈现<input>标记。使用上面的hack,"Active"保留在<label>中,<input>放在您期望的位置:在具有"控制"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-crispy-forms 的开发分支中得到了修复。

引用此提交:5c3a268

这个 github 问题:#267

最新更新