diff options
| author | Timo Tuominen | 2014-09-01 15:03:39 +0300 | 
|---|---|---|
| committer | Timo Tuominen | 2014-09-01 15:03:39 +0300 | 
| commit | ae84b8b0e8a99261ea2436f77ab5238f21603c0c (patch) | |
| tree | 6845ef9441c1158d1c4bcb16aa968f8e7d52e4e6 /rest_framework | |
| parent | 82d4b2083292659358d5df4d03d2115576e8ae4e (diff) | |
| download | django-rest-framework-ae84b8b0e8a99261ea2436f77ab5238f21603c0c.tar.bz2 | |
Traverse the method resolution order when mapping serializer fields.
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/serializers.py | 12 | 
1 files changed, 5 insertions, 7 deletions
| diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 6d25161e..f37fbf98 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -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):          """ | 
