Allow perform_create and perform_update to return differemt HTTP header

This commit is contained in:
Kingston 2015-06-24 19:52:58 -07:00
parent cd0c9b7555
commit 25ab99a882

View File

@ -17,9 +17,20 @@ class CreateModelMixin(object):
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
status_code = self.perform_create(serializer)
if status_code is None:
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
return Response(
serializer.data,
status=status.HTTP_201_CREATED,
headers=headers
)
else:
return Response(
serializer.data,
status=status_code,
headers=headers
)
def perform_create(self, serializer):
serializer.save()
@ -66,8 +77,11 @@ class UpdateModelMixin(object):
instance = self.get_object()
serializer = self.get_serializer(instance, data=request.data, partial=partial)
serializer.is_valid(raise_exception=True)
self.perform_update(serializer)
status_code = self.perform_update(serializer)
if status_code is None:
return Response(serializer.data)
else:
return Response(serializer.data, status=status_code)
def perform_update(self, serializer):
serializer.save()