Here is the link to the "Bootstrap Layout objects" section of Crispy Forms docs.
InlineCheckboxes: It renders a Django forms.MultipleChoiceField field using inline checkboxes
InlineCheckboxes isn't appropriate for your model's field-type.
A hacky way to achieve what you're looking for is to use PrependedText
with an empty string for the text
argument.
...
PrependedText('active', ''),
...
Examining the source it appears that a boolean field by default renders the <input>
tag inside the <label>
tag. Using the hack above, 'Active' stays in the <label>
and the <input>
is put where you'd expect: in a <div>
with "control" css class. Compare the following:
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>
Update
I've confirmed that this is fixed in the dev branch of django-crispy-forms.
Reference this commit: 5c3a268
And this github issue: #267
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…