我想知道是否可以添加任何验证以确保所选日期不是周末?目前,我的代码如下:
appointment_date = DateField('Appointment Date', format='%Y-%m-%d', default=date.today(), validators=[DateRange(min=date.today()), DataRequired()])
最简单的方法是什么?谢谢
答案 0 :(得分:0)
为了检查星期几,请查看Python3的文档,其中显示如下内容:
>>> my_date = date(2002, 12, 4)
>>> my_date.isoweekday()
3
星期一是第1天,星期日是第7天。
答案 1 :(得分:0)
通过定义自定义验证器https://wtforms.readthedocs.io/en/stable/validators.html#custom-validators,可以轻松实现WTForms中的自定义数据验证。这是任何可调用的,接受2个位置参数,形式和字段并在验证失败时引发wtforms.ValidationError的对象。
class WeekdayValidator(object):
def __call__(self, form, field):
if field.data and field.data.isoweekday() > 5:
raise ValidationError("Date selected cannot be a weekend.")
然后可以将其与字段定义中的其他验证器一起使用。
appointment_date = DateField('Appointment Date',
format='%Y-%m-%d',
default=date.today(),
validators=[WeekdayValidator(),
DateRange(min=date.today()),
DataRequired()])