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

active = models.BooleanField(default=True)

在我的 ModelForm 中,我在布局中尝试了以下两项:

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

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

请参见 图片链接

使用 InlineCheckboxes 时,我看不到复选框并且仅使用 Field,它的格式不正确。

请帮忙

有帮助吗?

解决方案

这里是 关联 到 Crispy Forms 文档的“Bootstrap 布局对象”部分。

内联复选框:它使用内联复选框呈现 Django forms.MultipleChoiceField 字段

InlineCheckboxes 不适合您模型的字段类型。


实现您正在寻找的目标的一种巧妙方法是使用 PrependedText 带有一个空字符串 text 争论。

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

检查源代码,默认情况下,布尔字段会呈现 <input> 标签里面的 <label> 标签。使用上面的技巧,“Active”保留在 <label><input> 放置在您期望的位置:在一个 <div> 与“控制”CSS 类。比较以下内容:

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 的 dev 分支中修复。

参考这个提交: 5c3a268

还有这个 github 问题: #267

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top