Flask WTForms:为至少一个字段验证 InputRequired
Flask WTForms: validation InputRequired for at least one field
有没有一种方法可以在 WTFforms 中实施验证,强制要求 至少一个 字段是必需的?
例如,我有两个 StringField
,我想确保用户在单击“提交”之前至少在其中一个字段中写了一些东西。
field1 = StringField('Field 1', validators=[???])
field2 = StringField('Field 2', validators=[???])
我应该写什么来代替 ???
? InputRequired()
在这种情况下不会完成这项工作,因为我需要将其分配给其中一个字段或同时分配给两个字段。我该怎么做?
重写表单的 validate
方法。例如:
class CustomForm(FlaskForm):
field1 = StringField('Field 1')
field2 = StringField('Field 2')
def validate(self, extra_validators=None):
if super().validate(extra_validators):
# your logic here e.g.
if not (self.field1.data or self.field2.data):
self.field1.errors.append('At least one field must have a value')
return False
else:
return True
return False
请注意,您仍然可以向字段中添加单独的验证器,例如输入长度。
有没有一种方法可以在 WTFforms 中实施验证,强制要求 至少一个 字段是必需的?
例如,我有两个 StringField
,我想确保用户在单击“提交”之前至少在其中一个字段中写了一些东西。
field1 = StringField('Field 1', validators=[???])
field2 = StringField('Field 2', validators=[???])
我应该写什么来代替 ???
? InputRequired()
在这种情况下不会完成这项工作,因为我需要将其分配给其中一个字段或同时分配给两个字段。我该怎么做?
重写表单的 validate
方法。例如:
class CustomForm(FlaskForm):
field1 = StringField('Field 1')
field2 = StringField('Field 2')
def validate(self, extra_validators=None):
if super().validate(extra_validators):
# your logic here e.g.
if not (self.field1.data or self.field2.data):
self.field1.errors.append('At least one field must have a value')
return False
else:
return True
return False
请注意,您仍然可以向字段中添加单独的验证器,例如输入长度。