WTForms SelectMultipleField:禁用验证

WTForms SelectMultipleField: disable validation

我有一个在运行时使用 JavaScript 的 SelectMultipleField populated/modified。我的问题是这违反了验证器,因此对 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() 启动的验证过程需要什么?

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

改变这个的唯一方法是实现一个自己的字段,该字段派生自 SelectMultipleField:

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

之后可以直接在表单中使用该字段:

NoValidationSelectMultipleField('Test', coerce=int)