Python Flask WTForms datetime验证另一个

问题描述 投票:1回答:2

是否可以在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时它大于时间。

此外,我还没有能够将timeOut字段设置为可选。

提前致谢。

python flask flask-wtforms
2个回答
0
投票

你需要在你的课堂上覆盖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

0
投票

我最终这样做,所以我可以在多个领域进行验证

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
© www.soinside.com 2019 - 2024. All rights reserved.