diff options
| author | Tom Christie | 2012-09-28 15:54:00 +0100 | 
|---|---|---|
| committer | Tom Christie | 2012-09-28 15:54:00 +0100 | 
| commit | 9f71f8e618555d888fff8edd322c440b49f331bc (patch) | |
| tree | eb0672888424a454678f0fbf8eab9cabac394725 /rest_framework/serializers.py | |
| parent | 4ebd701be74fbb1f44f7763f7ab9e19f6483ac96 (diff) | |
| download | django-rest-framework-9f71f8e618555d888fff8edd322c440b49f331bc.tar.bz2 | |
Fix broken bits of generic views
Diffstat (limited to 'rest_framework/serializers.py')
| -rw-r--r-- | rest_framework/serializers.py | 14 | 
1 files changed, 9 insertions, 5 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index bdb0f10a..9cbdb9de 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -231,6 +231,9 @@ class BaseSerializer(Field):          """          Serialize objects -> primatives.          """ +        if isinstance(obj, DeserializedObject): +            obj = obj.object +          if isinstance(obj, dict):              return dict([(key, self.to_native(val))                           for (key, val) in obj.items()]) @@ -295,11 +298,7 @@ class ModelSerializer(RelatedField, Serializer):          """          Return all the fields that should be serialized for the model.          """ -        if serialize: -            cls = obj.__class__ -        else: -            cls = self.opts.model - +        cls = self.opts.model          opts = get_concrete_model(cls)._meta          pk_field = opts.pk          while pk_field.rel: @@ -342,6 +341,11 @@ class ModelSerializer(RelatedField, Serializer):          """          Restore the model instance.          """ +        if instance: +            for key, val in attrs.items(): +                setattr(instance, key, val) +            return DeserializedObject(instance) +          m2m_data = {}          for field in self.opts.model._meta.many_to_many:              if field.name in attrs:  | 
