aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/serializers.py
diff options
context:
space:
mode:
authorTom Christie2012-09-28 15:54:00 +0100
committerTom Christie2012-09-28 15:54:00 +0100
commit9f71f8e618555d888fff8edd322c440b49f331bc (patch)
treeeb0672888424a454678f0fbf8eab9cabac394725 /rest_framework/serializers.py
parent4ebd701be74fbb1f44f7763f7ab9e19f6483ac96 (diff)
downloaddjango-rest-framework-9f71f8e618555d888fff8edd322c440b49f331bc.tar.bz2
Fix broken bits of generic views
Diffstat (limited to 'rest_framework/serializers.py')
-rw-r--r--rest_framework/serializers.py14
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: