diff --git a/rest_framework/mixins.py b/rest_framework/mixins.py index 5fbcf700f..954b9998b 100644 --- a/rest_framework/mixins.py +++ b/rest_framework/mixins.py @@ -54,7 +54,8 @@ class CreateModelMixin(object): 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, + data = self.get_create_response_data(serializer) + return Response(data, status=status.HTTP_201_CREATED, headers=headers) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @@ -65,6 +66,9 @@ class CreateModelMixin(object): except (TypeError, KeyError): return {} + def get_create_response_data(self, serializer): + return serializer.data + class ListModelMixin(object): """ @@ -137,7 +141,8 @@ class UpdateModelMixin(object): return Response(err.message_dict, status=status.HTTP_400_BAD_REQUEST) self.object = serializer.save(**save_kwargs) self.post_save(self.object, created=created) - return Response(serializer.data, status=success_status_code) + data = self.get_update_response_data(serializer) + return Response(data, status=success_status_code) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) @@ -160,6 +165,9 @@ class UpdateModelMixin(object): # return a 404 response. raise + def get_update_response_data(self, serializer): + return serializer.data + def pre_save(self, obj): """ Set any attributes on the object that are implicit in the request.