Python Flask WTForms 日期时间验证另一个
Python Flask WTForms datetime validate another
是否可以对 WTForms 中的日期时间字段与另一个日期时间进行比较来进行验证?
我有表格
class EventEdit(FlaskForm):
timeIn = DateTimeField('Time In', validators=[DataRequired()])
timeOut = DateTimeField('Time Out', validators=[DataRequired()])
reason = RadioField('Reason', choices=[
('Incident','Incident'),
('Gym','Gym'),
('Meeting','Meeting'),
('Other','Other')])
comment = StringField('Additional Comments')
submit = SubmitField('Save Changes')
我需要确保输入的 timeOut 大于 timeIn。
此外,我还没有能够让 timeOut 字段成为可选字段。
提前致谢。
您需要覆盖 class 中的 validate
函数。但请务必先调用 Form.validate(self)
,因为它仍然需要验证各个字段。
class EventEdit(FlaskForm):
timeIn = DateTimeField('Time In', validators=[DataRequired()])
timeOut = DateTimeField('Time Out', validators=[DataRequired()])
reason = RadioField('Reason', choices=[
('Incident','Incident'),
('Gym','Gym'),
('Meeting','Meeting'),
('Other','Other')])
comment = StringField('Additional Comments')
submit = SubmitField('Save Changes')
def validate(self):
if not Form.validate(self):
return False
if self.timeIn.data < self.timeOut.data:
return False
else:
return True
我最终这样做是为了在多个字段上进行验证
def validate_timeOut(self, timeOut):
if self.timeIn.data > self.timeOut.data:
self.timeOut.errors.append('Time must be after Time In')
return False
else:
return True
def validate_comment(self, comment):
if len(self.comment.data) > 120:
self.comment.errors.append('Comment is too long!')
return False
else:
return True
是否可以对 WTForms 中的日期时间字段与另一个日期时间进行比较来进行验证?
我有表格
class EventEdit(FlaskForm):
timeIn = DateTimeField('Time In', validators=[DataRequired()])
timeOut = DateTimeField('Time Out', validators=[DataRequired()])
reason = RadioField('Reason', choices=[
('Incident','Incident'),
('Gym','Gym'),
('Meeting','Meeting'),
('Other','Other')])
comment = StringField('Additional Comments')
submit = SubmitField('Save Changes')
我需要确保输入的 timeOut 大于 timeIn。
此外,我还没有能够让 timeOut 字段成为可选字段。
提前致谢。
您需要覆盖 class 中的 validate
函数。但请务必先调用 Form.validate(self)
,因为它仍然需要验证各个字段。
class EventEdit(FlaskForm):
timeIn = DateTimeField('Time In', validators=[DataRequired()])
timeOut = DateTimeField('Time Out', validators=[DataRequired()])
reason = RadioField('Reason', choices=[
('Incident','Incident'),
('Gym','Gym'),
('Meeting','Meeting'),
('Other','Other')])
comment = StringField('Additional Comments')
submit = SubmitField('Save Changes')
def validate(self):
if not Form.validate(self):
return False
if self.timeIn.data < self.timeOut.data:
return False
else:
return True
我最终这样做是为了在多个字段上进行验证
def validate_timeOut(self, timeOut):
if self.timeIn.data > self.timeOut.data:
self.timeOut.errors.append('Time must be after Time In')
return False
else:
return True
def validate_comment(self, comment):
if len(self.comment.data) > 120:
self.comment.errors.append('Comment is too long!')
return False
else:
return True