class ConversionMixin: converters = [] def clean(self, raw_value): for converter in self.converters: raw_value = converter(raw_value) return super().clean(raw_value) def with_converters(field, *converters, **field_kwargs): class_name = 'Conversion{}'.format(field.__name__) new_class = type(class_name, (ConversionMixin, field), {'converters': converters}) return partial(new_class, **field_kwargs)