【问题标题】:WTForms Selectfield - How to fetch only the values of a particular column?WTForms Selectfield - 如何仅获取特定列的值?
【发布时间】:2018-10-21 15:43:39
【问题描述】:

首先,我最近开始使用 Flask,所以我现在完全是新手,但我喜欢它,希望以后能提高我的技能。但是,我可能缺少一些非常基本的东西,例如:我创建了包含选择字段的表单:

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' 是数据库中列的名称:

{'name': 'Gears and bolts'}

我的问题 - 是否可以仅将值(在本例中为“Gears and bolts”)显示为选择字段的选项文本,而不是整个前一行?

谢谢。

【问题讨论】:

    标签: python mysql sql flask wtforms


    【解决方案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'

    【讨论】:

      猜你喜欢
      • 2017-08-21
      • 1970-01-01
      • 2012-08-19
      • 2014-02-08
      • 2012-09-05
      • 2017-05-16
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      相关资源
      最近更新 更多