SelectField返回值wtf-forms

时间:2015-01-13 22:56:06

标签: python forms

我使用以下代码在python中创建了一个SelectField:

condition = SelectField(u'Condition', choices = [(1,condition_string[5]),(2, condition_string[4]),(3, condition_string[3]),(4, condition_string[2]),(5, condition_string[1])], validators =[validators.Required(message=u'Must enter the condition of the book')])

我的问题是:当用户提交他们的选择时,将从html返回什么:    它会从condition_string []返回一个值,还是会返回它在列表中排序的数字, 例如:如果使用选择第一个选项,它将返回' 1'或来自condition_string [5]的值?

1 个答案:

答案 0 :(得分:0)

都不是。

来自WTForms docs

  

选择字段保留选项属性,该属性是(值,标签)对的序列。值部分理论上可以是任何类型,但是当表单数据由浏览器作为字符串发送时,您需要提供一个函数,该函数可以将字符串表示强制转换回类似的对象。

(形成错误的)问题是,

  

"将从html返回什么内容?"

我假设您要问的是:

  

处理从浏览器收到的数据后,condition.data的价值是多少?

答案是:一个字符串。它可以是字面上任何字符串 - 这就是你必须验证的原因。

但如果用户正在合作,则浏览器会将值作为字符串发回,而condition.data将返回u'1'或{{1}请注意(value,label)对的第一个元素,不一定是u'2'列表中的位置。

原样,该字段永远不会验证,因为值(choices s)提供的数字与字符串数据(默认情况下强制转换为unicode)不匹配。这就是文档说"you will need to provide a function which can coerce the string representation back to a comparable object."

的原因