使用列表在wtforms fieldlist中设置标签名称

kokeuurv  于 2021-09-08  发布在  Java
关注(0)|答案(0)|浏览(209)

我想用一个 FieldList 通过wtforms构建表单。我有一个字符串列表,例如: vehicles = ['car', 'truck', 'van'] 我已经构建了我的表单,所以我有:车辆=['car','truck','van']

class VehicleForm(Form):
    value = DecimalField()

class VehicleEntryForm(FlaskForm):
    values = FieldList(
        FormField(VehicleForm),
        min_entries=len(vehicles))
    submit = SubmitField('Submit')

我正在使用jinja进行渲染,作为:

<form action="" method="post">
    {{ form.hidden_tag() }}
    {% for value in form.values %}
        {{value.label}}{{value()}}
    {% endfor %}
        {{ form.submit() }}
</form>

这将创建一个带有通用标签的表单,正如人们所期望的那样。表单标签的html显示为:

...<label for="values-0-value">Value</label>...
...<label for="values-1-value">Value</label>...
...<label for="values-2-value">Value</label>...

问题是如何使用我的列表更新后端上的标签值。我试过:

form = VehicleEntryForm()
ii = 0
for field in form.values:
    field.label = labels[ii]
    ii+=1

然后将html/jinja更新为:

<form action="" method="post">
    {{ form.hidden_tag() }}
    {% for value in form.values %}
        {{value.label}}{{value()}}
    {% endfor %}
        {{ form.submit() }}
</form>

然而,这导致现在:

car<table id="values-0" label="car"><tr><th><label for="values-0-value">Value</label></th><td><input id="values-0-value" name="values-0-value" required type="text" value=""></td></tr></table>

truck<table id="values-1" label="truck"><tr><th><label for="values-1-value">Value</label></th><td><input id="values-1-value" name="values-1-value" required type="text" value=""></td></tr></table>

这让我走了一半。。。但我怎样才能得到替代品呢 <label for="values-0-value">Value</label> 具有 <label for="values-0-value">Car</label> ?
注:该 vehicles 列表来自模型查询,因此长度可以是可变的。。。这就是为什么我尝试了这一点(如果它总是一样的3件事,我只需要键入它)。
如果fieldlist和formfield不是实现这一点的方法,我愿意接受其他方法。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题