aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework
diff options
context:
space:
mode:
Diffstat (limited to 'rest_framework')
-rw-r--r--rest_framework/generics.py9
-rw-r--r--rest_framework/mixins.py4
-rw-r--r--rest_framework/routers.py12
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'