WTForms中访问RadioField的子字段

3 投票
1 回答
1593 浏览
提问于 2025-04-18 01:32

建议的方式来建模模板HTML的单选框输入是:

{% for subfield in form.radio %}
<tr>
    <td>{{ subfield }}</td>
    <td>{{ subfield.label }}</td>
</tr>
{% endfor %}

但是如果我在单选框的子字段之间有一些元素呢?我想做成这样:

{{ form.radio[0] }} {{ form.radio[0].label }}
<div>Something 1</div>
<div>Something 2</div>
<div>Something 3</div>
{{ form.radio[1] }} {{ form.radio[1].label }}
<div>Something 4</div>
{{ form.radio[2] }} {{ form.radio[2].label }}

有没有办法像这样访问子字段呢?

1 个回答

2

把它转换成列表,你就可以继续了。

In [1]: import wtforms
In [2]: class Form(wtforms.form.Form):
   ...:         radio = wtforms.fields.RadioField(choices=((1, 1), (2, 2)))
   ...:
In [3]: f = Form()
In [4]: option1, option2 = f.radio
In [5]: print option1
<input id="radio-0" name="radio" type="radio" value="1">
In [6]: print option2
<input id="radio-1" name="radio" type="radio" value="2">
In [7]: opts = list(f.radio)
In [8]: print opts[0]
<input id="radio-0" name="radio" type="radio" value="1">
In [9]: print opts[1]
<input id="radio-1" name="radio" type="radio" value="2">

撰写回答