diff --git a/rest_framework/mixins.py b/rest_framework/mixins.py index 93b5bd684..bf2b60b5f 100644 --- a/rest_framework/mixins.py +++ b/rest_framework/mixins.py @@ -14,7 +14,8 @@ class CreateModelMixin: Create a model instance. """ def create(self, request, *args, **kwargs): - serializer = self.get_serializer(data=self.get_create_data(request)) + data = self.get_create_data(request) + serializer = self.get_serializer(data=data) serializer.is_valid(raise_exception=True) self.perform_create(serializer) headers = self.get_success_headers(serializer.data) @@ -66,7 +67,8 @@ class UpdateModelMixin: def update(self, request, *args, **kwargs): partial = kwargs.pop('partial', False) instance = self.get_object() - serializer = self.get_serializer(instance, data=request.data, partial=partial) + data = self.get_update_data(request) + serializer = self.get_serializer(instance, data=data, partial=partial) serializer.is_valid(raise_exception=True) self.perform_update(serializer) @@ -77,6 +79,9 @@ class UpdateModelMixin: return Response(serializer.data) + def get_update_data(self, request): + return request.data + def perform_update(self, serializer): serializer.save()