我有一种情况,我想仅显示表单字段的“数据”(不呈现为字段类型)。
通过使用字段的 .data 属性,这通常很简单,但我不知道如何为 SelectField 执行此操作,我想在其中显示选择的标签而不是其数据。
简单的例子:
class testform(Form)
name = StringField()
fruit = SelectField(choices=[('1','Lemon'),('2','Lime')])
myform = testform(name='foo', fruit='2')
#in template
{{myform.name.data}}   {{myform.fruit.data}}
这显示 foo 2 但我想显示 foo Lime
似乎没有办法引用fruit.data.label
如果我使用外部枚举,这会很容易,但在这种情况下,SelectField IS是枚举,所以我有点卡住了。
有什么想法如何获取选择的标签吗?
您可以通过将类包装在带参数的函数中来填充表单
def populate_testform(name_default_value, fruit_default_value):
class testform(Form):
name = StringField(default=name_default_value)
fruit = SelectField(choices=[('1','Lemon'),('2','Lime')], default=fruit_default_value)
return testform()
myform = populate_testform('foo', '2')
我设法使用以下代码来做到这一点:
{% for value, label in field.choices %}
<li data-value="{{ value }}">{{ label }}</li>
{% endfor %}
您可以将 li 标签更改为
option
标签并将其包装在 select
标签内,以重新构建 html 下拉列表。