Flask WTForms - 来自数据库的动态布尔字段

JRC*_*hon 5 python flask wtforms

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

我能够为 SelectField 创建动态内容,但很难为 BooleanField 创建动态内容。这是我正在尝试做的事情:

创建一个从团队中检索球员的表单(在数据库中)。为每个玩家创建一个 BooleanField。如果数据库中的“active”字段为1,则该值被选中(true),否则为未选中(false)。系统用户可以选中/取消选中任何框,然后提交表格。

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

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

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

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

形式.py:

class myform(Form):
    available = BooleanField('available')
    submit = SubmitField('Save')
Run Code Online (Sandbox Code Playgroud)

视图.py:

form = myform(available=True)
Run Code Online (Sandbox Code Playgroud)

网页.html

Available: {{ form.available }}
Run Code Online (Sandbox Code Playgroud)

当网页呈现时,复选框被选中(由于 available=True),我正在传递该复选框,但当我提交时,值返回为 False)。

我确实注意到奇怪的是,即使选中该框,渲染的 HTML -<input id="available" type="checkbox" value="y" name="available" checked="">

Checked="" 对我来说没有意义。我注意到,当我删除“available=True”时,就没有checked=“”。我认为正确的 HTML 应该被检查=检查..