gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 19:29:21 25 4
gpt4 key购买 nike

在我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com