diff options
| author | Mark Aaron Shirley | 2013-01-08 09:38:15 -0800 |
|---|---|---|
| committer | Mark Aaron Shirley | 2013-01-16 16:04:20 -0800 |
| commit | 34e14b01e402a2b2bcaf57aab76397757e260fd6 (patch) | |
| tree | 8177302492e8e7db7ff61abf56f81382bbcc9d08 /rest_framework/serializers.py | |
| parent | 2d62bcd5aaa6d8f25f22b3e6b89ce26c44d9dfc4 (diff) | |
| download | django-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.py | 18 |
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 |
