Traverse the method resolution order when mapping serializer fields.

This commit is contained in:
Timo Tuominen 2014-09-01 15:03:39 +03:00
parent 82d4b20832
commit ae84b8b0e8

View File

@ -904,13 +904,11 @@ class ModelSerializer(Serializer):
for attribute in attributes:
kwargs.update({attribute: getattr(model_field, attribute)})
try:
return self.field_mapping[model_field.__class__](**kwargs)
except KeyError:
for model_field_class, serializer_field_class in self.field_mapping.items():
if isinstance(model_field, model_field_class):
return serializer_field_class(**kwargs)
return ModelField(model_field=model_field, **kwargs)
for model_field_baseclass in inspect.getmro(model_field.__class__):
serializer_field_class = self.field_mapping.get(model_field_baseclass)
if serializer_field_class:
return serializer_field_class(**kwargs)
return ModelField(model_field=model_field, **kwargs)
def get_validation_exclusions(self, instance=None):
"""