Python 在调用日期字段的验证器之前更改field.data?

Python 在调用日期字段的验证器之前更改field.data?,python,flask,wtforms,flask-wtforms,Python,Flask,Wtforms,Flask Wtforms,我的问题很简单,下面是一个基本示例: class F(Form): date_test = DateField('Test', validators=[Required()], format='%d/%m/%Y') 在调用验证器之前,我需要更改用户发送的值。 在不失去使用WTForms的好处的情况下,最简单的方法是什么?所有WTForm字段都应该支持关键字参数,它是将在输入数据上运行的可调用项列表: def transform_data(data): # do something

我的问题很简单,下面是一个基本示例:

class F(Form):
  date_test = DateField('Test', validators=[Required()], format='%d/%m/%Y')
在调用验证器之前,我需要更改用户发送的值。
在不失去使用WTForms的好处的情况下,最简单的方法是什么?

所有WTForm字段都应该支持关键字参数,它是将在输入数据上运行的可调用项列表:

def transform_data(data):
    # do something with data here
    return data

class F(Form):
    date_test = DateField('Test', validators=[Required()], format='%d/%m/%Y',
                              filters=[transform_data])
实际上,“过滤器”很不错,但这并不是我想要做的。 我创建了一个自定义字段,它正在工作

class MyDateField(DateField):
    def __init__(self, label='', validators=None, transform_data=False, **kwargs):
        super(MyDateField, self).__init__(label, validators, **kwargs)
        self.transform_data = transform_data

    def process_formdata(self, valuelist):
      if self.transform_data:
        data = str(valuelist[0])
        # transform your data here. (for example: data = data.replace('-', '.'))

      super(MyDateField, self).process_formdata([data])

class F(Form):
    date_test = MyDateField('Test', validators=[Required()], format='%d/%m/%Y', transform_data=True])
如果要直接在用户字段中修改值,则需要重写_value()