python - 如何为 WTForms SelectField 设置默认值?

标签 python flask wtforms

当尝试使用 WTForms 设置 SelectField 的默认值时,我将值传递给 'default' 参数,如下所示。

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 的默认值?'

最佳答案

我相信这个问题是由 Fielddata 属性用 WTForms 不理解的东西覆盖了 default 引起的(例如一个 DB 模型对象——它需要一个 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

关于python - 如何为 WTForms SelectField 设置默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12099741/

相关文章:

python - WTForms 等同于 <input type ="time">

python - 如何将一个字段显示为序列化器中的字符串?

带有 heredocs 的 Python 子进程

javascript - 图形 map 对象表示网站

在 Flask-socket 和 Gunicorn 上通过 3G 连接时,WebSocket 连接失败

Flask-Babel 转换 Flask-WTF SelectField

python - 为什么 django 的 create_user 方法不验证唯一性?

python - 如何使用 Python 和 Flask 实现每秒更新一次的时钟?

javascript - 使用 Google App Engine Flask dev_appserver.py 运行本地开发时,Chrome 不会刷新静态 JS 文件

python - 在 Jinja 中使用嵌入的 HTML 渲染 WTForms SelectField 选项