From c640b5ad85209e4abef326c23cd7f1ea8a0cda87 Mon Sep 17 00:00:00 2001 From: Ramast Magdy Date: Wed, 6 Jan 2016 19:39:26 +0800 Subject: [PATCH] Added "save_model_instance" function to handle model saving --- rest_framework/serializers.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 99d36a8a5..1fc62d597 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -807,6 +807,9 @@ class ModelSerializer(Serializer): # "HTTP 201 Created" responses. url_field_name = None + def save_model_instance(self, instance): + instance.save() + # Default `create` and `update` behavior... def create(self, validated_data): """ @@ -843,7 +846,8 @@ class ModelSerializer(Serializer): many_to_many[field_name] = validated_data.pop(field_name) try: - instance = ModelClass.objects.create(**validated_data) + instance = ModelClass(**validated_data) + self.save_model_instance(instance) except TypeError as exc: msg = ( 'Got a `TypeError` when calling `%s.objects.create()`. ' @@ -877,7 +881,7 @@ class ModelSerializer(Serializer): # have an instance pk for the relationships to be associated with. for attr, value in validated_data.items(): setattr(instance, attr, value) - instance.save() + self.save_model_instance(instance) return instance