Flask / WTForms:动态RadioField的正确方法

时间:2018-09-06 08:18:03

标签: python-3.x flask sqlalchemy flask-wtforms

我在使用WTForms创建动态RadioField时遇到问题...

当我尝试基本示例时:

targeting_type = RadioField('Label', choices=[('value', 'description'),
                                              ('value_two', 'whatever')])

一切正常。

当我尝试使用此示例时: Flask-SQLAlchemy wtform based on db

的形式是来自DB的值。但是,当我单击“提交”按钮时,页面被“重新加载”,但可能“没有数据”。

我的views.py示例:

form = TargetingTypeForm()
form.targeting_type.choices = [
    (targeting_type.id, targeting_type.name)
    for targeting_type in SettingsTargetingType.query.all()]

if form.validate_on_submit():
    print('test', form.targeting_type.data)

提交此表单后,未打印测试数据:/

请问用WTForms + SQLAlchemy查询创建RadioField的正确方法是什么?

谢谢您的回答。

1 个答案:

答案 0 :(得分:1)

由于您使用ID作为值,并且我猜它是整数,因此您必须在coerse上使用RadioField属性!

尝试一下:

form = TargetingTypeForm()
form.targeting_type.choices = [
    (targeting_type.id, targeting_type.name)
    for targeting_type in SettingsTargetingType.query.all()]
form.targeting_type.coerse = int
if form.validate_on_submit():
    print('test', form.targeting_type.data)

或将coerse=int添加到targeting_type类的TargetingTypeForm定义中