Web2py SELECT 选项值
Web2py SELECT option value
在 Web2Py 的控制器中,我试图用查询结果填充表单中的下拉列表。当用户提交表单时,我想提取 value 而不是选项名称。我似乎无法让选项值显示在下拉列表中。
我有这个问题:
course_list = external_db.executesql("SELECT course_id, course_title FROM course ORDER BY course_id")
我有这个 table 行:
form=FORM(TABLE(TR('course list: ' , SELECT(course_list, _name='courses', requires=IS_IN_SET(course_list, course_list_id, zero='- choose -'))),
但我找不到一种方法只从选项下拉列表中取回值,而不是从选项名称中取回值。
我认为您不能在那里使用 IS_IN_SET 来填充下拉列表。请改用 OPTION 助手并循环遍历从查询返回的每个元组以填充它们:
options = [OPTION(course[1], _value=course[0]) for course in course_list]
form=FORM(TABLE(TR('course list: ', SELECT(options, _name='courses'))))
提交时从 form.vars.courses
检索 select 值
@dido 有正确的想法。 course_list
是一个 (value, label)
元组的列表,所以你不能简单地将它直接传递给 SELECT
来获得你想要的结果。另一种选择是使用 SQLFORM.factory
构建表单,这通常比通过 FORM
助手手动构建自定义表单更容易:
form = SQLFORM.factory(Field('courses', 'integer',
requires=IS_IN_SET(course_list, zero='- choose -')))
以上将自动生成 SELECT
,其中课程标题作为标签,课程 ID 作为值。
在 Web2Py 的控制器中,我试图用查询结果填充表单中的下拉列表。当用户提交表单时,我想提取 value 而不是选项名称。我似乎无法让选项值显示在下拉列表中。
我有这个问题:
course_list = external_db.executesql("SELECT course_id, course_title FROM course ORDER BY course_id")
我有这个 table 行:
form=FORM(TABLE(TR('course list: ' , SELECT(course_list, _name='courses', requires=IS_IN_SET(course_list, course_list_id, zero='- choose -'))),
但我找不到一种方法只从选项下拉列表中取回值,而不是从选项名称中取回值。
我认为您不能在那里使用 IS_IN_SET 来填充下拉列表。请改用 OPTION 助手并循环遍历从查询返回的每个元组以填充它们:
options = [OPTION(course[1], _value=course[0]) for course in course_list]
form=FORM(TABLE(TR('course list: ', SELECT(options, _name='courses'))))
提交时从 form.vars.courses
检索 select 值@dido 有正确的想法。 course_list
是一个 (value, label)
元组的列表,所以你不能简单地将它直接传递给 SELECT
来获得你想要的结果。另一种选择是使用 SQLFORM.factory
构建表单,这通常比通过 FORM
助手手动构建自定义表单更容易:
form = SQLFORM.factory(Field('courses', 'integer',
requires=IS_IN_SET(course_list, zero='- choose -')))
以上将自动生成 SELECT
,其中课程标题作为标签,课程 ID 作为值。