aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/mixins.py
diff options
context:
space:
mode:
authorTom Christie2013-03-13 20:40:39 +0000
committerTom Christie2013-03-13 20:40:39 +0000
commitacc8c1faa4f85dda00723d755e56bb3c980dbc75 (patch)
tree963418ba768dadd1ff2b5912fe819f05c2288ddb /rest_framework/mixins.py
parenta53596ce28359e24313a5fb9bd8f3564eb12678e (diff)
downloaddjango-rest-framework-acc8c1faa4f85dda00723d755e56bb3c980dbc75.tar.bz2
force_insert, force_update arguments. Closes #484.
Confirmed by `assertNumQueries(…)` in tests.
Diffstat (limited to 'rest_framework/mixins.py')
-rw-r--r--rest_framework/mixins.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/rest_framework/mixins.py b/rest_framework/mixins.py
index 8e401204..7d9a6e65 100644
--- a/rest_framework/mixins.py
+++ b/rest_framework/mixins.py
@@ -44,7 +44,7 @@ class CreateModelMixin(object):
if serializer.is_valid():
self.pre_save(serializer.object)
- self.object = serializer.save()
+ self.object = serializer.save(force_insert=True)
self.post_save(self.object, created=True)
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED,
@@ -119,9 +119,11 @@ class UpdateModelMixin(object):
# we have relevant permissions, as if this was a POST request.
self.check_permissions(clone_request(request, 'POST'))
created = True
+ save_kwargs = {'force_insert': True}
success_status_code = status.HTTP_201_CREATED
else:
created = False
+ save_kwargs = {'force_update': True}
success_status_code = status.HTTP_200_OK
serializer = self.get_serializer(self.object, data=request.DATA,
@@ -129,7 +131,7 @@ class UpdateModelMixin(object):
if serializer.is_valid():
self.pre_save(serializer.object)
- self.object = serializer.save()
+ self.object = serializer.save(**save_kwargs)
self.post_save(self.object, created=created)
return Response(serializer.data, status=success_status_code)