Unfortunately, I do not have enough reputation to comment on the first answer. But there is an extremely unpleasant mistake in this example: When you do filter.append (smth), in each form initialization filters the growth by 1 element. As a result, your code runs slower and slower until you restart it.
Consider an example:
class MyBaseForm(Form): class Meta: def bind_field(self, form, unbound_field, options): filters = unbound_field.kwargs.get('filters', []) filters.append(my_strip_filter) return unbound_field.bind(form=form, filters=filters, **options) def my_strip_filter(value): if value is not None and hasattr(value, 'strip'): return value.strip() return value class MyCustomForm(MyBaseForm): some_field = StringField(filters=[lambda x: x]) for i in range(100): MyCustomForm(MultiDict({'some_field': 'erer'})) print(len(MyCustomForm.some_field.kwargs['filters']))
Thus, a quick fix is ββto verify that this filter is not in the list:
class MyBaseForm(Form): class Meta: def bind_field(self, form, unbound_field, options): filters = unbound_field.kwargs.get('filters', []) if my_strip_filter not in filters: filters.append(my_strip_filter) return unbound_field.bind(form=form, filters=filters, **options)
source share