我有一个表格,里面有几个字段。持有表单的类看起来像
class TestForm(Form):
some_stuff_1 = IntegerField('Cool Bucket', description="Cool bucket",default=0,validators[validators.Optional(),validators.NumberRange(0, 100)])
some_stuff_2 = IntegerField('Boring Bucket', description="Boring bucket",default=0,validators[validators.Optional(),validators.NumberRange(0, 100)])
some_stuff_3 = IntegerField('Funny Bucket', description="Funny bucket",default=0,validators[validators.Optional(),validators.NumberRange(0, 100)])
some_stuff_4 = IntegerField('Amazing Bucket', description="Amazing bucket",default=0,validators[validators.Optional(),validators.NumberRange(0, 100)])
以上工作正常。但是现在我有一个额外的条件,我想确认用户不应该为所有4个字段输入全部0
。因此,基本上,我正在这里寻找客户验证,如果用户在所有四个字段中均输入0,则应该向我显示一条消息。我看过flask wtforms自定义验证,但一次只适用于一个字段,在这里我尝试将验证应用于几个字段。
有人可以指导我怎么做。
答案 0 :(得分:0)
诀窍是连接到验证钩并编写您自己的测试。
class TestForm(FlaskForm):
val1 = IntegerField('Cool Bucket', description="Cool bucket",default=0,validators[validators.Optional(),validators.NumberRange(0, 100)])
val2 = IntegerField('Cool Bucket', description="Cool bucket",default=0,validators[validators.Optional(),validators.NumberRange(0, 100)])
def validate(self):
rv = FlaskForm.validate(self)
if not rv:
return False
test = (self.val1.data == 0) and (self.val2.data == 0)
if test:
self.val1.errors.append('Val1 and 2 cannot be 0')
return False
return True