【发布时间】:2019-08-28 11:24:50
【问题描述】:
我有一个带有多个复选框的表单。但默认情况下它们是垂直显示的。我想水平显示它们。我需要为此任务创建自定义小部件。我找到了CheckboxSelectMultiple的默认代码
https://github.com/django/django/blob/master/django/forms/widgets.py#L765
class CheckboxSelectMultiple(ChoiceWidget):
allow_multiple_selected = True
input_type = 'checkbox'
template_name = 'django/forms/widgets/checkbox_select.html'
option_template_name = 'django/forms/widgets/checkbox_option.html'
def use_required_attribute(self, initial):
# Don't use the 'required' attribute because browser validation would
# require all checkboxes to be checked instead of at least one.
return False
def value_omitted_from_data(self, data, files, name):
# HTML checkboxes don't appear in POST data if not checked, so it's
# never known if the value is actually omitted.
return False
def id_for_label(self, id_, index=None):
""""
Don't include for="field_0" in <label> because clicking such a label
would toggle the first checkbox.
"""
if index is None:
return ''
return super().id_for_label(id_, index)
使用 django 小部件链接到 git
https://github.com/django/django/tree/master/django/forms/templates/django/forms/widgets
我还发现了用于水平显示的bootstrap 表单multiple checkboxes
{% for ... %}
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="materialInline{{ .id}}">
<label class="form-check-label" for="materialInline{{ .id}}">{{ .title}}</label>
</div>
{% endfor %}
但我不知道如何将其结合起来。
【问题讨论】:
标签: python django django-widget