我有一个使用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()
启动的验证过程需要什么?
答案 0 :(得分:5)
问题是pre_validation
总是在执行任何指定的验证器之前执行。因此,我的问题中的dummy_validator
不会改变此行为。
改变这种情况的唯一方法是实现一个派生自SelectMultipleField
:
class NoValidationSelectMultipleField(SelectMultipleField):
def pre_validate(self, form):
"""per_validation is disabled"""
之后,可以直接使用表格中的字段:
NoValidationSelectMultipleField('Test', coerce=int)