Flask WTForms - 来自数据库

时间:2015-11-10 04:22:27

标签: python flask wtforms

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

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

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

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

我做了一些研究并看到了一些关于匹配我的ORM模型的想法 - 但我并没有真正尝试创建一个字段条目以匹配我的ORM模型中的每一列我的玩家 - 只是想拉一些数据并动态创建表单。

可以在jinja2模板中完成所有这些,但这似乎不是最好的方法......

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

forms.py:

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

views.py:

form = myform(available=True)

webpage.html

Available: {{ form.available }}

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

我注意到的是,奇怪的是即使选中此框也会呈现HTML - <input id="available" type="checkbox" value="y" name="available" checked="">

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

1 个答案:

答案 0 :(得分:-1)

如果要基于表的特定列的值动态设置checked的{​​{1}}属性,则可以通过以下方式进行设置:

BooleanField

forms.py

# Create the boolean field in the form is_active = BooleanField('Is Active')

views.py