aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/mixins.py
diff options
context:
space:
mode:
authorTom Christie2014-08-29 16:46:26 +0100
committerTom Christie2014-08-29 16:46:26 +0100
commit4ac4676a40b121d27cfd1173ff548d96b8d3de2f (patch)
tree560509db11316a36189088dd8b03df4126a696cd /rest_framework/mixins.py
parent371d30aa8737c4b3aaf28ee10cc2b77a9c4d1fd9 (diff)
downloaddjango-rest-framework-4ac4676a40b121d27cfd1173ff548d96b8d3de2f.tar.bz2
First pass
Diffstat (limited to 'rest_framework/mixins.py')
-rw-r--r--rest_framework/mixins.py24
1 files changed, 8 insertions, 16 deletions
diff --git a/rest_framework/mixins.py b/rest_framework/mixins.py
index ac59d979..ee01cabc 100644
--- a/rest_framework/mixins.py
+++ b/rest_framework/mixins.py
@@ -36,12 +36,10 @@ class CreateModelMixin(object):
Create a model instance.
"""
def create(self, request, *args, **kwargs):
- serializer = self.get_serializer(data=request.DATA, files=request.FILES)
+ serializer = self.get_serializer(data=request.DATA)
if serializer.is_valid():
- self.pre_save(serializer.object)
- self.object = serializer.save(force_insert=True)
- self.post_save(self.object, created=True)
+ self.object = serializer.save()
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED,
headers=headers)
@@ -90,26 +88,20 @@ class UpdateModelMixin(object):
partial = kwargs.pop('partial', False)
self.object = self.get_object_or_none()
- serializer = self.get_serializer(self.object, data=request.DATA,
- files=request.FILES, partial=partial)
+ serializer = self.get_serializer(self.object, data=request.DATA, partial=partial)
if not serializer.is_valid():
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
- try:
- self.pre_save(serializer.object)
- except ValidationError as err:
- # full_clean on model instance may be called in pre_save,
- # so we have to handle eventual errors.
- return Response(err.message_dict, status=status.HTTP_400_BAD_REQUEST)
+ lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field
+ lookup_value = self.kwargs[lookup_url_kwarg]
+ extras = {self.lookup_field: lookup_value}
if self.object is None:
- self.object = serializer.save(force_insert=True)
- self.post_save(self.object, created=True)
+ self.object = serializer.save(extras=extras)
return Response(serializer.data, status=status.HTTP_201_CREATED)
- self.object = serializer.save(force_update=True)
- self.post_save(self.object, created=False)
+ self.object = serializer.save(extras=extras)
return Response(serializer.data, status=status.HTTP_200_OK)
def partial_update(self, request, *args, **kwargs):