使用WTF基于两种不同形式的数据进行验证



我正在尝试接受两种不同的输入工作,即收入,并在提交前验证两者。就像如果工作是";"办公室";收入必须在(5500013000(的范围内,它还有3个这样的条件。我曾尝试编写自定义验证器,但从文档中我了解到,您只能编写每个表单字段,而不能组合两个字段并进行验证。

对于自定义验证器,请尝试使用类似于标准EqualTo的方法,后者使用不同的字段。

class EqualTo:
def __init__(self, fieldname, message=None):
self.fieldname = fieldname
self.message = message
def __call__(self, form, field):
try:
other = form[self.fieldname]
except KeyError as exc:
raise ValidationError(
field.gettext("Invalid field name '%s'.") % self.fieldname
) from exc
if field.data == other.data:
return
d = {
"other_label": hasattr(other, "label")
and other.label.text
or self.fieldname,
"other_name": self.fieldname,
}
message = self.message
if message is None:
message = field.gettext("Field must be equal to %(other_name)s.")
raise ValidationError(message % d)

最新更新