If you'd like to have a field's `to_python()` called on assignement you should
attach a descriptor[1] on the model class on `contribute_to_class()` that calls
it.
e.g.
class Converter(object):
def __init__(self, field):
self.name =
field.name self.convert = field.to_python
def __get__(self, instance, owner=None):
if instance is None:
return self
try:
return instance.__dict__[
self.name]
except KeyError:
return AttributeError(
self.name)
def __set__(self, instance, value):
instance.__dict__[
self.name] = self.convert(value)
class FieldConverterMixin(object):
def contribute_to_class(model, name):
super(FieldConverterMixin, self).contribute_to_class(model, name)
setattr(model, name, Converter(self))
This is mostly what SubfieldBase use to do.
Cheers,
Simon