jan*_*jan 41 python flask wtforms
当尝试使用WTForms设置SelectField的默认值时,我将值传递给'default'参数,就像这样.
class TestForm(Form):
test_field = SelectField("Test: ", choices=[(1, "Abc"), (2, "Def")], default=2)
Run Code Online (Sandbox Code Playgroud)
我也试过以下.
class TestForm(Form):
test_field = SelectField("Test: ", choices=[(1, "Abc"), (2, "Def")], default=(2, "Def"))
Run Code Online (Sandbox Code Playgroud)
既不将默认的选定字段设置为"Def".这适用于其他类型的字段,如TextField.如何设置SelectField的默认值?'
Ell*_*t C 35
我相信这个问题是由引起Field的data属性重写default的东西,WTForms不理解(如数据库模型对象-它期望的int).如果你在构造函数中填充了表单,就会发生这种情况:
form = PostForm(obj=post)
Run Code Online (Sandbox Code Playgroud)
解决方案是data在填充表单后手动设置属性:
form = PostForm(obj=post)
form.category.data = (post.category.id
if page.category
else 0) # I make 0 my default
Run Code Online (Sandbox Code Playgroud)
sp.*_*sp. 29
你发布的第一种方式是正确的,它对我有用.它不起作用的唯一解释是你运行的是旧版本的WTForms,它在1.0.1上适用于我
get*_*up8 14
有几种方法可以做到这一点.您的第一个代码段确实是正确的.
如果您想在动态视图中执行此操作,您还可以执行以下操作:
form = TestForm()
form.test_field.default = some_default_id
form.process()
Run Code Online (Sandbox Code Playgroud)
小智 14
Flask-WTF 0.14.2用户在这里.所以这个答案适用于任何与我有类似问题的人.
基本上,以前的解决方案都没有正常运行form.validate_on_submit().
设置form.test_field.data确实会改变默认值加载页面时,但该数据保持不变后validate_on_submit(在浏览器用户的变化没有影响).
设置form.test_field.default然后调用form.process()也会在页面加载时更改值,但validate_on_submit会失败.
这是实现它的新方法:
class TestForm(Form):
test_field = SelectField("Test", choices=[(0, "test0"), (1, "test1")])
@app.route("/test")
def view_function():
form = TestForm(test_field=1)
if form.validate_on_submit():
...
Run Code Online (Sandbox Code Playgroud)
这是一个choices使用SelectField时的设置int,它的工作方式如下:
test_select = SelectField("Test", coerce=int, choices=[(0, "test0"), (1, "test1")], default=1)
Run Code Online (Sandbox Code Playgroud)
要么:
class TestForm(Form):
test_select = SelectField("Test", coerce=int)
@app.route("/test")
def view_function():
form = TestForm()
form.test_select.choices = [(0, "test0"), (1, "test1")]
form.test_select.default = 1
form.process()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
42395 次 |
| 最近记录: |