将数据属性添加到django表单库呈现的<options>

时间:2017-03-29 10:53:40

标签: javascript html django

我有django choice field

django呈现的HTML如下所示:

<select id="id_action" name="action">
 <option value="" selected="selected">---</option>
 <option value="query-action-take">Take</option>
 <option value="query-action-forward">Forward</option>
</select>

在执行用户选择的操作之前,应该进行确认。但并非所有行动都需要确认。在这个例子中&#34;删除&#34;需要,但&#34;采取&#34;不需要确认。

我想添加html data attributes 选项

结果应如下所示:

<select id="id_action" name="action">
 <option value="" selected="selected">---</option>
 <option value="query-action-take"   data-need-confirm="False">Take</option>
 <option value="query-action-delete" data-need-confirm="True">Delete</option>
</select>

到目前为止,我发现没有办法注入数据&#34;需要确认&#34;个人选择。

......或者我在错误的轨道上?

这个问题仅涉及如何将数据导入html&#34;。对数据的评估(确认弹出窗口)不是这个问题的一部分。

2 个答案:

答案 0 :(得分:4)

您需要为此创建自定义窗口小部件。如果您查看Select小部件(django.forms.Select)的Django文档,您将找到render_option()方法。因此,最好将默认的Select类子类化并覆盖此方法。

答案 1 :(得分:0)

模板渲染器肯定包含添加数据的功能,问题在于从哪里获取数据。

<select id="id_action" name="action">
 <option value="" selected="selected">---</option>
 {% for action in actions %}
  <option value="{{action.value}}"   data-need-confirm="{{action.isConfirm}}">{{action.name}}</option>
 {% endfor %}
</select>

这是您要添加到模型中的内容吗?可能不是。但您也可以将其添加为硬编码字典。