在python wtforms中选择具有动态选择值的字段。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在python wtforms中选择具有动态选择值的字段。相关的知识,希望对你有一定的参考价值。
如何在python wtforms中做一个动态选择的选择栏。我读了几乎所有的出版物。我真的明白这一点。
- 不要在类表格中添加选择,因为它只被研究过一次,并且会给你带来问题,用这种方式验证。
category = SelectField('Category', coerce=int)
- 逼迫int以确保它能被正确的读取:
category = SelectField('Category', choices=[], coerce=int)
- 用这种方式在端点上添加选择。
form.category.choices = categories
现在,这就是问题所在。
- 如果你不添加 choices=[],它会引发错误 NoneType。
- 如果你添加了选择,它不会生效,因为 "无效"
我的代码。
author=SelectField('author', choices=[], default=1)
Cursor.execute(source, 1)
choices_source=Cursor.fetchall()
form.source.choices= [(c[0], c[1]) for c in choices_source]
有什么简单的方法可以实现吗?
答案
设置 choices
属性后似乎可以工作。
import wtforms
from werkzeug.datastructures import MultiDict
class AuthorForm(wtforms.Form):
author = wtforms.SelectField('author', coerce=int, default=1)
authors = [(1, 'Amy Tan'), (2, 'Michael Chabon')]
af = AuthorForm()
af.author.choices = authors
for field in af:
print(field)
af = AuthorForm(formdata=MultiDict([('author', '1')]))
af.author.choices = authors
if not af.validate():
print(af.errors)
else:
print(af.data)
输出:
<select id="author" name="author"><option selected value="1">Amy Tan</option><option value="2">Michael Chabon</option></select>
{'author': 1}
以上是关于在python wtforms中选择具有动态选择值的字段。的主要内容,如果未能解决你的问题,请参考以下文章
动态选择 WTForms Flask SelectField
十三 .Flask wtforms组件和选择框动态数据实时更新