diff options
| author | Xavier Ordoquy | 2014-03-31 07:49:23 +0200 |
|---|---|---|
| committer | Xavier Ordoquy | 2014-03-31 07:49:23 +0200 |
| commit | 73cd4e236f0c119f5b6e0baad1259142fe37ace1 (patch) | |
| tree | e6ba3be5fd3df1e9c82434f8cb1856ad6a8f1ad4 /rest_framework/serializers.py | |
| parent | 2a27674a7971a60050d4530a0852a864b2065adb (diff) | |
| parent | f5fc6937ece8c2bc70088979cc19c2c0a660c7a0 (diff) | |
| download | django-rest-framework-73cd4e236f0c119f5b6e0baad1259142fe37ace1.tar.bz2 | |
Merge pull request #1477 from vlastv/patch-1
Writable star source with instance
Diffstat (limited to 'rest_framework/serializers.py')
| -rw-r--r-- | rest_framework/serializers.py | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 88972e25..cb7539e0 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -438,16 +438,6 @@ class BaseSerializer(WritableField): raise ValidationError(self.error_messages['required']) return - # Set the serializer object if it exists - obj = get_component(self.parent.object, self.source or field_name) if self.parent.object else None - - # If we have a model manager or similar object then we need - # to iterate through each instance. - if (self.many and - not hasattr(obj, '__iter__') and - is_simple_callable(getattr(obj, 'all', None))): - obj = obj.all() - if self.source == '*': if value: reverted_data = self.restore_fields(value, {}) @@ -457,6 +447,16 @@ class BaseSerializer(WritableField): if value in (None, ''): into[(self.source or field_name)] = None else: + # Set the serializer object if it exists + obj = get_component(self.parent.object, self.source or field_name) if self.parent.object else None + + # If we have a model manager or similar object then we need + # to iterate through each instance. + if (self.many and + not hasattr(obj, '__iter__') and + is_simple_callable(getattr(obj, 'all', None))): + obj = obj.all() + kwargs = { 'instance': obj, 'data': value, |
