From 19dcdc5442728451540d764f674f299cc2a80d48 Mon Sep 17 00:00:00 2001 From: Xavier Ordoquy Date: Fri, 16 May 2014 00:06:14 +0200 Subject: [PATCH] Try to recover an object by its ID before duplicating it. --- rest_framework/serializers.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index def223f83..7659c444a 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -526,6 +526,11 @@ class BaseSerializer(WritableField): # Determine which object we're updating identity = self.get_identity(item) self.object = identity_to_objects.pop(identity, None) + if not self.object and getattr(self.opts, 'model', None): + try: + self.object = self.opts.model.objects.get(id=self.get_identity(item)) + except ObjectDoesNotExist: + pass if self.object is None and not self.allow_add_remove: ret.append(None) errors.append({'non_field_errors': ['Cannot create a new item, only existing items may be updated.']})