diff options
| author | Tom Christie | 2013-05-18 07:06:21 -0700 |
|---|---|---|
| committer | Tom Christie | 2013-05-18 07:06:21 -0700 |
| commit | ea9a3d88bce5507af753a79b259e6bd8e53a9059 (patch) | |
| tree | b30b8d4fa780e7e7c7858d8a8234cd10d447186c /rest_framework/serializers.py | |
| parent | 80a2600891aab2211c8c4bf3ce78e3c1d5c6de72 (diff) | |
| parent | 208bd991dacb6c2edc9fc820717354c579c2e6d6 (diff) | |
| download | django-rest-framework-ea9a3d88bce5507af753a79b259e6bd8e53a9059.tar.bz2 | |
Merge pull request #859 from craigds/master
fix for #765
Diffstat (limited to 'rest_framework/serializers.py')
| -rw-r--r-- | rest_framework/serializers.py | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 500bb306..9cfeed37 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -378,23 +378,27 @@ class BaseSerializer(WritableField): # Set the serializer object if it exists obj = getattr(self.parent.object, field_name) if self.parent.object else None - if value in (None, ''): - into[(self.source or field_name)] = None + if self.source == '*': + if value: + into.update(value) else: - kwargs = { - 'instance': obj, - 'data': value, - 'context': self.context, - 'partial': self.partial, - 'many': self.many - } - serializer = self.__class__(**kwargs) - - if serializer.is_valid(): - into[self.source or field_name] = serializer.object + if value in (None, ''): + into[(self.source or field_name)] = None else: - # Propagate errors up to our parent - raise NestedValidationError(serializer.errors) + kwargs = { + 'instance': obj, + 'data': value, + 'context': self.context, + 'partial': self.partial, + 'many': self.many + } + serializer = self.__class__(**kwargs) + + if serializer.is_valid(): + into[self.source or field_name] = serializer.object + else: + # Propagate errors up to our parent + raise NestedValidationError(serializer.errors) def get_identity(self, data): """ |
