因此,在尝试并尝试了几种不同的方法之后,我进行多种表单字段验证的方式仍然是沿着
on_model_change固定我知道它说在更改完成后调用事件挂钩 – 但是,因为它已被包装在事务中,可以引发任何异常以回滚事务.
这是我的示例代码,使其工作.
from flask.ext.admin.form import rules
from wtforms import validators
class TimeWindowView(LoggedInView):
column_filters = ('scheduled_start', 'scheduled_end')
form_create_rules = [
rules.Field('scheduled_start'),
rules.Field('scheduled_end'),
]
def on_model_change(self, form, model, is_created):
# if end date before start date or end date in the past, flag them invalid
if (form.scheduled_end.data <= form.scheduled_start.data or
form.scheduled_end.data <= datetime.datetime.utcnow()):
raise validators.ValidationError('Invalid schedule start and end time!')
else:
super().on_model_change(form, model, is_created)