8000 Merge pull request #739 from craigds/basic-nested-serialization · dhepper/django-rest-framework@75fbfb5 · GitHub
[go: up one dir, main page]

Skip to content

Commit 75fbfb5

Browse files
committed
Merge pull request encode#739 from craigds/basic-nested-serialization
tweaks to writable nested serializers
2 parents ee20cf8 + 101fa26 commit 75fbfb5

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

rest_framework/serializers.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ class Meta(object):
129129
_dict_class = SortedDictWithMetadata
130130

131131
def __init__(self, instance=None, data=None, files=None,
132-
context=None, partial=False, many=None, source=None):
133-
super(BaseSerializer, self).__init__(source=source)
132+
context=None, partial=False, many=None, **kwargs):
133+
super(BaseSerializer, self).__init__(**kwargs)
134134
self.opts = self._options_class(self.Meta)
135135
self.parent = None
136136
self.root = None
@@ -358,9 +358,13 @@ def field_from_native(self, data, files, field_name, into):
358358
try:
359359
value = data[field_name]
360360
except KeyError:
361-
if self.required:
362-
raise ValidationError(self.error_messages['required'])
363-
return
361+
if self.default is not None and not self.partial:
362+
# Note: partial updates shouldn't set defaults
363+
value = copy.deepcopy(self.default)
364+
else:
365+
if self.required:
366+
raise ValidationError(self.error_messages['required'])
367+
return
364368

365369
# Set the serializer object if it exists
366370
obj = getattr(self.parent.object, field_name) if self.parent.object else None

0 commit comments

Comments
 (0)
0