python - Flask WTForms - 来自数据库的动态 BooleanField

标签 python flask wtforms

在我的 flask 项目中,我有 views.py、models.py(SQLAlchemy 到 postgres)和 forms.py 文件。我一直在 form.py 中定义表单并从 views.py 实例化它们。

我能够为 SelectField 创建动态内容,但很难为 BooleanField 创建此内容。这是我想要做的:

创建一个从团队中检索球员的表单(在 db 中)。为每个玩家创建一个 BooleanField。如果 db 中的“事件”字段为 1,则该值被选中(真),否则它是未选中(假)。系统用户可以选中/取消选中任何框,然后提交表单。

我对玩家进行迭代没有问题,但我似乎无法弄清楚如何为每个 BooleanField 生成唯一的名称(如果它们具有相同的名称,我只会得到一个值)。我还需要根据用户的事件状态动态传递默认值。

我做了一些研究,看到了一些关于匹配我的 ORM 模型的想法 - 但我并不是真的想创建一个字段条目来匹配我的玩家的 ORM 模型中的每一列 - 只是试图提取一些数据并创建一个动态的表格。

可能能够在 jinja2 模板中完成这一切,但这似乎不是最好的方法......

好的 - 现在尝试变得更基本,仍然有问题 - BooleanField 总是返回 False:

表格.py:

class myform(Form):
    available = BooleanField('available')
    submit = SubmitField('Save')

View .py:
form = myform(available=True)

网页.html
Available: {{ form.available }}

当网页呈现复选框时(由于可用=真),我正在传递它,但是当我提交时,值返回为假)。

我确实注意到很奇怪的是,即使选中了该框,也会呈现呈现的 HTML - <input id="available" type="checkbox" value="y" name="available" checked="">
Checked=""对我来说没有意义。我注意到当我删除 'available=True' 时,没有选中 =“”。我认为应该检查正确的 HTML=检查..

最佳答案

如果要根据表的特定列的值动态设置 checkedBooleanField 属性,可以通过以下方式进行:
forms.py :

# Create the boolean field in the form
is_active = BooleanField('Is Active')
views.py :
# Select the players from the database and for each of them set the boolean field state
# Here we are selecting all players and iterating through them
# session.query() is specific to SQLAlchemy which is primarily used with flask as an ORM
players = session.query(Player).all()
for player in players:
  # Set other form fields like a dynamically populated SelectField etc.

  # Set the boolean field for each player here
  form.is_active.default = "checked" if player.active == 1 else ""

关于python - Flask WTForms - 来自数据库的动态 BooleanField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33622826/

相关文章:

python - 为遗传算法中的适应度比例选择(轮盘赌)生成概率列表

python - 如何定义默认为 Python 3.5 的 Nix 环境

javascript - Jquery submit() 没有将表单数据提交到我的 View

python - WTForms 2.3.0 重大更改 - ImportError : cannot import name 'HTMLString' from 'wtforms.widgets'

python - 在选择字段中设置默认值,使用 wtforms 和 flask

python - 在 python3 中使用 readline 自动完成

使用 sqlalchemy 的 mariadb 的 Python 数据库连接

python - Flask - 访问模板中的配置变量

python - Flask 只能看到使用 curl 发送的多个参数中的第一个参数

python - 如何测试 Flask 使用的是 test_client 而不是 client?