diff options
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/generics.py | 9 | ||||
| -rw-r--r-- | rest_framework/mixins.py | 4 | ||||
| -rw-r--r-- | rest_framework/routers.py | 12 | 
3 files changed, 17 insertions, 8 deletions
| diff --git a/rest_framework/generics.py b/rest_framework/generics.py index 36ecf915..dea980a5 100644 --- a/rest_framework/generics.py +++ b/rest_framework/generics.py @@ -187,8 +187,7 @@ class UpdateAPIView(mixins.UpdateModelMixin,          return self.update(request, *args, **kwargs)      def patch(self, request, *args, **kwargs): -        kwargs['partial'] = True -        return self.update(request, *args, **kwargs) +        return self.partial_update(request, *args, **kwargs)  class ListCreateAPIView(mixins.ListModelMixin, @@ -217,8 +216,7 @@ class RetrieveUpdateAPIView(mixins.RetrieveModelMixin,          return self.update(request, *args, **kwargs)      def patch(self, request, *args, **kwargs): -        kwargs['partial'] = True -        return self.update(request, *args, **kwargs) +        return self.partial_update(request, *args, **kwargs)  class RetrieveDestroyAPIView(mixins.RetrieveModelMixin, @@ -248,8 +246,7 @@ class RetrieveUpdateDestroyAPIView(mixins.RetrieveModelMixin,          return self.update(request, *args, **kwargs)      def patch(self, request, *args, **kwargs): -        kwargs['partial'] = True -        return self.update(request, *args, **kwargs) +        return self.partial_update(request, *args, **kwargs)      def delete(self, request, *args, **kwargs):          return self.destroy(request, *args, **kwargs) diff --git a/rest_framework/mixins.py b/rest_framework/mixins.py index 7d9a6e65..c700602e 100644 --- a/rest_framework/mixins.py +++ b/rest_framework/mixins.py @@ -137,6 +137,10 @@ class UpdateModelMixin(object):          return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) +    def partial_update(self, request, *args, **kwargs): +        kwargs['partial'] = True +        return self.update(request, *args, **kwargs) +      def pre_save(self, obj):          """          Set any attributes on the object that are implicit in the request. diff --git a/rest_framework/routers.py b/rest_framework/routers.py index c37909ff..afc51f3b 100644 --- a/rest_framework/routers.py +++ b/rest_framework/routers.py @@ -20,8 +20,16 @@ class BaseRouter(object):  class DefaultRouter(BaseRouter):      route_list = [ -        (r'$', {'get': 'list', 'post': 'create'}, 'list'), -        (r'(?P<pk>[^/]+)/$', {'get': 'retrieve', 'put': 'update', 'delete': 'destroy'}, 'detail'), +        (r'$', { +            'get': 'list', +            'post': 'create' +        }, 'list'), +        (r'(?P<pk>[^/]+)/$', { +            'get': 'retrieve', +            'put': 'update', +            'patch': 'partial_update', +            'delete': 'destroy' +        }, 'detail'),      ]      extra_routes = r'(?P<pk>[^/]+)/%s/$'      name_format = '%s-%s' | 
