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)
我有一个在运行时使用 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)