尝试使用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的默认值?
你发布的第一种方法是正确的,并且对我有用。唯一无法解释的原因可能是你正在运行旧版本的WTForms,它在1.0.1上对我有效
我认为此问题是由于Field的data属性覆盖了defaultWTForms无法理解的内容(例如,数据库模型对象-期望使用int)引起的。如果你像这样在构造函数中填充表单,就会发生这种情况:
Field
data
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