This commit is contained in:
Ludwig Kraatz 2012-12-08 11:14:25 -08:00
commit 6aef693ebf
2 changed files with 10 additions and 7 deletions

View File

@ -18,7 +18,7 @@ class CreateModelMixin(object):
serializer = self.get_serializer(data=request.DATA, files=request.FILES)
if serializer.is_valid():
self.pre_save(serializer.object)
self.object = serializer.save()
self.object = serializer.save(force_insert=True)
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
@ -93,7 +93,10 @@ class UpdateModelMixin(object):
if serializer.is_valid():
self.pre_save(serializer.object)
self.object = serializer.save()
if created:
self.object = serializer.save(force_insert=True)
else:
self.object = serializer.save(force_update=True)
status_code = created and status.HTTP_201_CREATED or status.HTTP_200_OK
return Response(serializer.data, status=status_code)

View File

@ -339,11 +339,11 @@ class BaseSerializer(Field):
self._data = self.to_native(self.object)
return self._data
def save(self):
def save(self,**kwargs):
"""
Save the deserialized object and return it.
"""
self.object.save()
self.object.save(**kwargs)
return self.object
@ -519,18 +519,18 @@ class ModelSerializer(Serializer):
self.m2m_data[field.name] = attrs.pop(field.name)
return self.opts.model(**attrs)
def save(self, save_m2m=True):
def save(self, save_m2m=True, **kwargs):
"""
Save the deserialized object and return it.
"""
self.object.save()
obj = super(ModelSerializer, self).save(**kwargs)
if getattr(self, 'm2m_data', None) and save_m2m:
for accessor_name, object_list in self.m2m_data.items():
setattr(self.object, accessor_name, object_list)
self.m2m_data = {}
return self.object
return obj
class HyperlinkedModelSerializerOptions(ModelSerializerOptions):