SelectField 呈现 unicode 语法
SelectField renders unicode syntax
在 WTForms 中为 SelectField 动态创建选项时,我在下拉列表中呈现 (u'Choice',)。
我怀疑它与 unicode 有关,但不知道如何获得正确的字符串。
例如
form.group_id_name.choices = [(row, row) for row in db.session.query(entry.group_id_name).distinct()]
在我的表格中我有
group_id_name = SelectField('group_id_name')
我想要渲染
<select id="group_id_name" name="group_id_name"><option value="Choice1">Choice1</option><option value="Choice2">Choice2</option></select>
相反我得到
<select id="group_id_name" name="group_id_name"><option value="(u'Choice1',)">(u'Choice1',)</option><option value="(u'Choice2',)">(u'Choice2',)</option></select>
这与 Unicode 无关。
query()
returns 每行的列值序列。对于其中只有一列的查询,您会得到一个长度为 1 的元组。
当您将元组隐式转换为字符串作为模板的一部分时,您将获得元组的 Python 代码表示,类似于 (somevalue,)
.
您想在模板中包含列本身的字符串值,因此您应该访问序列的第一个元素,例如:
form.group_id_name.choices = [(row[0], row[0]) for row in db.session.query(entry.group_id_name).distinct()]
或使用解包赋值:
form.group_id_name.choices = [(name, name) for (name,) in db.session.query(entry.group_id_name).distinct()]
在 WTForms 中为 SelectField 动态创建选项时,我在下拉列表中呈现 (u'Choice',)。 我怀疑它与 unicode 有关,但不知道如何获得正确的字符串。
例如
form.group_id_name.choices = [(row, row) for row in db.session.query(entry.group_id_name).distinct()]
在我的表格中我有
group_id_name = SelectField('group_id_name')
我想要渲染
<select id="group_id_name" name="group_id_name"><option value="Choice1">Choice1</option><option value="Choice2">Choice2</option></select>
相反我得到
<select id="group_id_name" name="group_id_name"><option value="(u'Choice1',)">(u'Choice1',)</option><option value="(u'Choice2',)">(u'Choice2',)</option></select>
这与 Unicode 无关。
query()
returns 每行的列值序列。对于其中只有一列的查询,您会得到一个长度为 1 的元组。
当您将元组隐式转换为字符串作为模板的一部分时,您将获得元组的 Python 代码表示,类似于 (somevalue,)
.
您想在模板中包含列本身的字符串值,因此您应该访问序列的第一个元素,例如:
form.group_id_name.choices = [(row[0], row[0]) for row in db.session.query(entry.group_id_name).distinct()]
或使用解包赋值:
form.group_id_name.choices = [(name, name) for (name,) in db.session.query(entry.group_id_name).distinct()]