从wtforms SelectField表单获取选定文本

2024-05-15 03:37:47 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个关于wtforms SelectField用法的问题。

提交表格后,我希望提取选定的文本。

我有以下表格:

from wtforms import Form, SelectField
class TestForm(Form):
     hour = SelectField(u'Hour', choices=[('1', '8am'), ('2', '10am') ])

这是景色:

@app.route('/', methods=['GET', 'POST'])
def test_create():
form =TestForm(request.form)
if request.method == 'POST' and form.validate():
    test = Test()
    form.populate_obj(test)
    test.hour=form.hour.name
    db.session.add(test)
    db.session.commit()
    return redirect(url_for('test_create'))
return render_template('test/edit.html', form=form)

使用test.hour=form.hour.name我获得属性name(毫不奇怪…),同时我需要文本(如果选择了第一个选项,就说8am)。

这怎么可能?谢谢你的提示。


Tags: nametest文本formdbrequestsessioncreate
3条回答

这是一个评论,所以我写在这里。

使用form.hour.data获取值而不是名称。

在表单中定义全局选项:

HOUR_CHOICES = [('1', '8am'), ('2', '10am')]

class TestForm(Form):
     hour = SelectField(u'Hour', choices=HOUR_CHOICES)

从表单导入,转换为dict:

from .forms import HOUR_CHOICES

hour_display = dict(HOUR_CHOICES).get(form.hour.data)

如果不需要选择索引,则更简单:

class TestForm(Form):
  hour = SelectField(u'Hour', choices=[('8am', '8am'), ('10am', '10am') ])

相关问题 更多 >

    热门问题