在我的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 =检查..
发布于 2019-06-12 17:18:07
如果要根据表的特定列的值动态设置checked
属性BooleanField
,可以通过以下方式执行此操作:
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 ""
https://stackoverflow.com/questions/-100005192
复制相似问题