diff options
| author | Ian Foote | 2014-04-13 17:26:15 +0100 |
|---|---|---|
| committer | Ian Foote | 2014-04-13 17:33:45 +0100 |
| commit | 853c7a16c15c7291561bc4b3dfbcad88ea262a18 (patch) | |
| tree | f83e3a6f5271c8a9827f5622886fc10da39f4c75 /rest_framework/serializers.py | |
| parent | 0a0e4f22e72badd1d8700a2b253cb27450a5319f (diff) | |
| download | django-rest-framework-853c7a16c15c7291561bc4b3dfbcad88ea262a18.tar.bz2 | |
Use setattr for adding fields to a new instance
Add test for restoring a GenericForeignKey
Diffstat (limited to 'rest_framework/serializers.py')
| -rw-r--r-- | rest_framework/serializers.py | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 1d6097ed..ea9509bf 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -955,17 +955,15 @@ class ModelSerializer(Serializer): if isinstance(self.fields.get(field_name, None), Serializer): nested_forward_relations[field_name] = attrs[field_name] - # Update an existing instance... - if instance is not None: - for key, val in attrs.items(): - try: - setattr(instance, key, val) - except ValueError: - self._errors[key] = self.error_messages['required'] + # Create an empty instance of the model + if instance is None: + instance = self.opts.model() - # ...or create a new instance - else: - instance = self.opts.model(**attrs) + for key, val in attrs.items(): + try: + setattr(instance, key, val) + except ValueError: + self._errors[key] = self.error_messages['required'] # Any relations that cannot be set until we've # saved the model get hidden away on these |
