TL; DR; ,我想用bootstrap-select with keywords替换Django表单中的标准引导程序下拉列表。是否有办法使{% render_field %}
向每个选项添加data-tokens=
?
我有一个页面,用户可以在其中标记照片中的人物。相应的形式如下:
class AddFaceForm(forms.ModelForm):
class Meta:
model = Face
fields = ('person', ...)
和这样的模板形式:
<form id="face-add-form" action="{% url 'photos:faces' photo.name %}" method="post" class="form-inline" hidden>
{% csrf_token %}
{% render_field form.person class+="form-control dropdown" title="Person"%}
...
这会将人员选择器呈现为标准下拉列表,选项列为
<option value="139">XXX</option>
<option value="121">YYY</option>
...
我可以通过将class+="form-control dropdown"
替换为class+="selectpicker" data-live-search="true"
来用bootstrap-select替换它。但是,这些选项仍将与标准下拉列表一起列出。为了增强搜索效果,我需要在每个选项中添加data-tokens
,例如:
<option value="139" data-tokens="nickname-XXX">XXX</option>
<option value="121" data-tokens="nickname-YYY">YYY</option>
是否有一种无需手动呈现表单的方法?
答案 0 :(得分:0)
我还没有找到漂亮的解决方案,但是如果没有{% render_field %}
,当然可以找到解决方法:
<select name="person" title="Person" id="id_person" class="selectpicker" data-live-search="true" required>
<option value="None"></option>
{% for p in people %}
<option value="{{ p.id }}" data-tokens="{{ p.all_names }}">{{ p.full_name }}</option>
{% endfor %}