我正在使用crispy_forms和FormHelper。我有一个模型字段声明为:
active = models.BooleanField(default=True)
在我的ModelForm中,我在我的布局中尝试了以下两种方法:
self.helper.layout = Layout(
...
InlineCheckboxes('active'),
Field('active'),
...
两者都没有提供所需的结果:
请参阅image link
使用InlineCheckboxes时,我没有看到复选框并仅使用Field,但格式不正确。
请帮忙
答案 0 :(得分:6)
以下是Crispy Forms文档的“Bootstrap Layout对象”部分的link。
InlineCheckboxes :使用内联复选框呈现Django forms.MultipleChoiceField字段
InlineCheckboxes不适合您的模型的字段类型。
实现所需内容的一种hacky方法是使用PrependedText
为text
参数添加空字符串。
...
PrependedText('active', ''),
...
检查源代码时,默认情况下,布尔字段会显示<input>
标记内的<label>
标记。使用上面的黑客攻击,“有效”会保留在<label>
中,而<input>
会放在您期望的位置:在<div>
中使用“control”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