首先,我最近刚开始使用Flask,所以现在我还是个新手,但我喜欢它,希望以后可以提高自己的技能。但是,可能缺少一些非常基本的东西,例如:我创建了包含selectfield的Form:
class AddProductForm(Form):
subcategory = SelectField('')
然后,我从查询中获取结果,并将其应用于SelectField的选择。
...
cur = conn.cursor()
cur.execute("SELECT name FROM subcategory")
subcategories = cur.fetchall()
cur.close()
form = AddProductForm(CombinedMultiDict((request.files, request.form)))
form.subcategory.choices = [(subcat, subcat) for subcat in subcategories]
...
到目前为止,一切工作正常,我在SelectField中获得了所有结果,但是我也用列名返回了它们,因此基本上,选择字段的每个选项的值看起来都像这样( “名称”是数据库中列的名称:
{'name': 'Gears and bolts'}
我的问题-是否有可能仅显示值(在这种情况下为“齿轮和螺栓”)作为选择字段的选项文本?
谢谢。
答案 0 :(得分:1)
我根据这个答案here得出了答案,我将把答案放在这里,以防万一有人需要它。基本上,我已经更改了这一行:
form.subcategory.choices = [(subcat, subcat) for subcat in subcategories]
到以下:
form.subcategory.choices = [(subcat, subcat['name']) for subcat in subcategories]
该死的...这是一些基本的东西,伙计。以前,我尝试使用subcat.name
而不是subcat['name']
,这显然是访问值的错误方法,并且我得到了AttributeError: 'dict' object has no attribute 'name'