diff options
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/compat.py | 8 | ||||
| -rw-r--r-- | rest_framework/serializers.py | 3 |
2 files changed, 10 insertions, 1 deletions
diff --git a/rest_framework/compat.py b/rest_framework/compat.py index 5fc6c686..7664c400 100644 --- a/rest_framework/compat.py +++ b/rest_framework/compat.py @@ -10,6 +10,14 @@ except ImportError: import StringIO +def get_concrete_model(model_cls): + try: + return model_cls._meta.concrete_model + except AttributeError: + # 1.3 does not include concrete model + return model_cls + + # First implementation of Django class-based views did not include head method # in base View class - https://code.djangoproject.com/ticket/15668 if django.VERSION >= (1, 4): diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 986d4225..bdb0f10a 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -4,6 +4,7 @@ import types from decimal import Decimal from django.core.serializers.base import DeserializedObject from django.utils.datastructures import SortedDict +from rest_framework.compat import get_concrete_model from rest_framework.fields import * @@ -299,7 +300,7 @@ class ModelSerializer(RelatedField, Serializer): else: cls = self.opts.model - opts = cls._meta.concrete_model._meta + opts = get_concrete_model(cls)._meta pk_field = opts.pk while pk_field.rel: pk_field = pk_field.rel.to._meta.pk |
