aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/serializers.py
diff options
context:
space:
mode:
authorMark Aaron Shirley2013-01-08 09:38:15 -0800
committerMark Aaron Shirley2013-01-16 16:04:20 -0800
commit34e14b01e402a2b2bcaf57aab76397757e260fd6 (patch)
tree8177302492e8e7db7ff61abf56f81382bbcc9d08 /rest_framework/serializers.py
parent2d62bcd5aaa6d8f25f22b3e6b89ce26c44d9dfc4 (diff)
downloaddjango-rest-framework-34e14b01e402a2b2bcaf57aab76397757e260fd6.tar.bz2
Move nested serializer logic into .field_from_native()
Diffstat (limited to 'rest_framework/serializers.py')
-rw-r--r--rest_framework/serializers.py18
1 files changed, 9 insertions, 9 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py
index 42218e7d..83bf1bc3 100644
--- a/rest_framework/serializers.py
+++ b/rest_framework/serializers.py
@@ -216,15 +216,6 @@ class BaseSerializer(WritableField):
for field_name, field in self.fields.items():
field.initialize(parent=self, field_name=field_name)
- if isinstance(field, ModelSerializer) and self.object:
- # Set the serializer object if it exists
- pk_field_name = field.opts.model._meta.pk.name
- obj = getattr(self.object, field_name)
- nested_data = data.get(field_name)
- pk_val = nested_data.get(pk_field_name) if nested_data else None
- if obj and (getattr(obj, pk_field_name) == pk_val):
- field.object = obj
- field.delete = nested_data.get('_delete')
try:
field.field_from_native(data, files, field_name, reverted_data)
except ValidationError as err:
@@ -393,6 +384,15 @@ class ModelSerializer(Serializer):
raise ValidationError(self.error_messages['required'])
return
+ if self.parent.object:
+ # Set the serializer object if it exists
+ pk_field_name = self.opts.model._meta.pk.name
+ pk_val = native.get(pk_field_name)
+ obj = getattr(self.parent.object, field_name)
+ if obj and (getattr(obj, pk_field_name) == pk_val):
+ self.object = obj
+ self.delete = native.get('_delete')
+
obj = self.from_native(native, files)
if not self._errors:
self.object = obj