我明白了SelectField
WTForms 中的方法采用 can 参数choices
其形式为...
choices=[("value1", "display of value 1"), ("value2", "display of value 2")]
我需要根据对数据库的调用来填充我的选择。我使用 neo4j 作为后端,因此无法使用 modelforms 或其他内置解决方案来填充表单中的数据。
def get_list_of_things():
query = 'start n = node:things("*:*") return ID(n), n.display_name;'
t = cypher.execute(cdb, query)[0]
for x in t:
x[0] = str(x[0])
x[1] = str(x[1])
things = list(tuple(x) for x in t)
return things
class SelectAThing(Form):
thingID = SelectField('Thing name', choices=get_list_of_things())
运行 choice = get_list_of_things() 确实会产生一个有效的选择列表,这很好,这基本上是有效的。
然而,即使数据库更新了事物列表,它似乎也永远不会更新,并且我稍后会返回到该表单。如果我将内容添加到数据库并返回,我仍然会看到第一个内容列表。
没有假人,只是不要把它放在课堂上。将其放入视图代码中。
@app.route('/route')
def routename()
form = SelectAThing()
form.orgid.choices=get_joinable_orgs()
我发现这很棘手,因为我没有意识到我可以在视图中初始化它之后将其分配给表单,就像它是一个常规的 python 对象一样。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)