【发布时间】:2014-06-21 01:39:39
【问题描述】:
我正在尝试创建一个SelectField 或SelectMultipleField,它允许我向它的<option> 标签添加属性。我正在尝试添加data-id 或另一个data-____ 之类的属性。我无法弄清楚如何做到这一点,因为似乎只能将属性添加到 <select> 标签本身而不是选项。
最终结果应该是这样的:
<select id="regularstuff-here" name="regular-name-here">
<option value="1" data-id="somedata here" >Some Name here</option>
<option value="2" data-id="somedata here" >Some Name here</option>
</select>
我假设我必须创建一个自定义小部件。如果我查看 WTForms 的源代码,我会看到 select 小部件调用:
html.append(self.render_option(val, label, selected))
如果我看那个方法:
@classmethod
def render_option(cls, value, label, selected, **kwargs):
options = dict(kwargs, value=value)
if selected:
options['selected'] = True
return HTMLString('<option %s>%s</option>' % (html_params(**options),
escape(text_type(label))))
因此,您似乎无法将任何额外的参数传递给呈现option 标签的方法。
【问题讨论】:
-
查看这篇文章 - stackoverflow.com/questions/23023788/… 我想你大概总结了一下。
-
@nsfyn55 感谢您确认这一点。非常感谢。
-
因为您知道它现在是如何工作的,并且有几个人想要这样做。您甚至可以考虑向
WTForms项目提交补丁。 -
@nsfyn55 你可以在这里看到整个 convo:github.com/wtforms/wtforms/pull/81
-
很有趣,非常感谢您的研究!