Move request.data to getter method

This change allow to manipulate data with request, in case data being
nested, required modification (a good example could be when instead
delete file we want to change `active` field to false instead -
performing update of { ‘active’ : False } )
This commit is contained in:
Tomasz Dubiel 2017-02-16 22:49:48 -06:00
parent e5ba567b37
commit f668db7514

View File

@ -15,8 +15,11 @@ class CreateModelMixin(object):
"""
Create a model instance.
"""
def get_request_data(self, request, *args, **kwargs):
return request.data
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer = self.get_serializer(data=self.get_request_data(request))
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
@ -62,10 +65,13 @@ class UpdateModelMixin(object):
"""
Update a model instance.
"""
def get_request_data(self, request, *args, **kwargs):
return request.data
def update(self, request, *args, **kwargs):
partial = kwargs.pop('partial', False)
instance = self.get_object()
serializer = self.get_serializer(instance, data=request.data, partial=partial)
serializer = self.get_serializer(instance, data=self.get_request_data(request), partial=partial)
serializer.is_valid(raise_exception=True)
self.perform_update(serializer)