一尘不染

如何为WTForms SelectField设置默认值?

flask

尝试使用WTForms设置SelectField的默认值时,我像这样将值传递给“默认”参数。

class TestForm(Form):
  test_field = SelectField("Test: ", choices=[(1, "Abc"), (2, "Def")], default=2)

我也尝试了以下方法。

class TestForm(Form):
  test_field = SelectField("Test: ", choices=[(1, "Abc"), (2, "Def")], default=(2, "Def"))

都不将默认选定字段设置为“ Def”。这适用于其他类型的字段,例如TextField。如何设置SelectField的默认值?


阅读 1093

收藏
2020-04-05

共2个答案

一尘不染

你发布的第一种方法是正确的,并且对我有用。唯一无法解释的原因可能是你正在运行旧版本的WTForms,它在1.0.1上对我有效

2020-04-05
一尘不染

我认为此问题是由于Fielddata属性覆盖了defaultWTForms无法理解的内容(例如,数据库模型对象-期望使用int)引起的。如果你像这样在构造函数中填充表单,就会发生这种情况:

form = PostForm(obj=post)

解决方案是data在填充表单后手动设置属性:

form = PostForm(obj=post)
form.category.data = (post.category.id
                      if page.category
                      else 0) # I make 0 my default
2020-04-05