WTForms SelectMultipleField:禁用验证

时间:2016-09-08 15:39:10

标签: validation python-3.x wtforms

我有一个使用JavaScript在运行时填充/修改的SelectMultipleField。我的问题是这违反了验证器,因此对form.validate_on_submit()的调用总是失败。

SelectMultipleField('Test', coerce=int)

我已经尝试设置无效的自定义验证器:

def dummy_validator(form, field):
    print("check: "+str(field.data))

SelectMultipleField('Test', coerce=int, [dummy_validator])

然而,这仍然失败。例如,我收到错误消息'7' is not a valid choice for this field

使SelectMultipleField通过form.validate_on_submit()启动的验证过程需要什么?

1 个答案:

答案 0 :(得分:5)

问题是pre_validation总是在执行任何指定的验证器之前执行。因此,我的问题中的dummy_validator不会改变此行为。

改变这种情况的唯一方法是实现一个派生自SelectMultipleField

的字段
class NoValidationSelectMultipleField(SelectMultipleField):
    def pre_validate(self, form):
        """per_validation is disabled"""

之后,可以直接使用表格中的字段:

NoValidationSelectMultipleField('Test', coerce=int)