我正在尝试在HTML模板中动态设置单选字段的值,但不确定如何设置默认选择。我想这样做,因为我想使用的表单是可以保存和重新编辑的表单,因此我希望默认值是以前保存/提交时设置的值。
WTFoform字段
field_1 = StringField('field_1')
radio_1 = RadioField('radio_1', choices=[(1,'Yes'),(2,'No')])
我希望能够做的是这样的:
数据是数据库数据
{% if data.field_1 = 'X' %}
{{ form.radio_1(id="radio_1",class="ff-style-radio",default=1) }}
{% else %}
{{ form.radio_1(id="radio_1",class="ff-style-radio",default=2) }}
{% endif %}
我还没有成功尝试这种方法,将默认值交换为值等。这样的事情可能吗?如果不是,我将如何分离 wtform 无线电场选项,以便我可以手动标记选中哪个选择?或者我应该只使用基本的 HTML 方法并执行以下操作:
<ul class="ff-style-radio" id="radio_1">
<li>
{% if data.field_1 = 'X' %}
<input id="radio_1-0" name="radio_1" type="radio" value="Yes" checked>
{% else %}
<input id="radio_1-0" name="radio_1" type="radio" value="Yes">
{% endif %}
<label for="radio_1-0">Yes</label>
</li>
<li>
{% if data.field_1 = 'X' %}
<input id="radio_1-1" name="radio_1" type="radio" value="No">
{% else %}
<input id="radio_1-1" name="radio_1" type="radio" value="No" checked>
{% endif %}
<label for="radio_1-1">No</label>
</li>
</ul>
感谢您的任何帮助
使用表单编辑数据库中已有的数据,则应在创建时在视图函数中将此数据提供给表单。这将使您能够保持模板简单且可重用。数据库中的数据可以作为对象或字典 https://wtforms.readthedocs.io/en/stable/forms.html 传递到表单。如果您的表单直接映射到数据库表,则可以不加修改地从查询中传递此内容。在下面的代码中,我按照您的示例创建了一个新字典,以根据 field_1
的值设置 radio_1
的值。
@app.route("/myurl")
def myview():
# do database lookup here
olddata = {"radio_1": 1 if data.field_1 == "X" else 2}
form = Myform(formdata=request.form, data=olddata)
if request.method == "POST" and form.validate():
# .....