diff options
| author | Tom Christie | 2014-10-07 17:21:12 +0100 |
|---|---|---|
| committer | Tom Christie | 2014-10-07 17:21:12 +0100 |
| commit | 3fa4a1898aee0dabee951f81f790bb2da042ec81 (patch) | |
| tree | 8c297dbf652d5d029a3cd90f07325566e526e22e | |
| parent | 6bfed6f8525a49fc50df7143ac2d492528b8f2ac (diff) | |
| download | django-rest-framework-3fa4a1898aee0dabee951f81f790bb2da042ec81.tar.bz2 | |
Reintroduce save hooks
| -rw-r--r-- | rest_framework/mixins.py | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/rest_framework/mixins.py b/rest_framework/mixins.py index bc4ce22f..03ebb034 100644 --- a/rest_framework/mixins.py +++ b/rest_framework/mixins.py @@ -20,10 +20,13 @@ class CreateModelMixin(object): def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) serializer.is_valid(raise_exception=True) - serializer.save() + self.create_valid(serializer) headers = self.get_success_headers(serializer.data) return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers) + def create_valid(self, serializer): + serializer.save() + def get_success_headers(self, data): try: return {'Location': data[api_settings.URL_FIELD_NAME]} @@ -64,9 +67,12 @@ class UpdateModelMixin(object): instance = self.get_object() serializer = self.get_serializer(instance, data=request.data, partial=partial) serializer.is_valid(raise_exception=True) - serializer.save() + self.update_valid(serializer) return Response(serializer.data) + def update_valid(self, serializer): + serializer.save() + def partial_update(self, request, *args, **kwargs): kwargs['partial'] = True return self.update(request, *args, **kwargs) |
