aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/serializers.py
diff options
context:
space:
mode:
Diffstat (limited to 'rest_framework/serializers.py')
-rw-r--r--rest_framework/serializers.py12
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):
"""