WTForms Selectfield-如何仅获取特定列的值?

时间:2018-10-21 15:43:39

标签: python mysql sql flask wtforms

首先,我最近刚开始使用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'}

我的问题-是否有可能仅显示值(在这种情况下为“齿轮和螺栓”)作为选择字段的选项文本?

谢谢。

1 个答案:

答案 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'