mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-27 08:29:59 +03:00
ModelSerializer perform_create and perform_update
The ModelSerializer function should expose two simple methods intended to be overridden by users if they only want to customize the Model saving call when creating and updating the instance.
This commit is contained in:
parent
3875d3284e
commit
83ed1f8fea
|
@ -936,7 +936,7 @@ class ModelSerializer(Serializer):
|
|||
many_to_many[field_name] = validated_data.pop(field_name)
|
||||
|
||||
try:
|
||||
instance = ModelClass._default_manager.create(**validated_data)
|
||||
instance = perform_create(ModelClass, validated_data)
|
||||
except TypeError:
|
||||
tb = traceback.format_exc()
|
||||
msg = (
|
||||
|
@ -964,6 +964,9 @@ class ModelSerializer(Serializer):
|
|||
field.set(value)
|
||||
|
||||
return instance
|
||||
|
||||
def perform_create(ModelClass, validated_data):
|
||||
return ModelClass._default_manager.create(**validated_data)
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
raise_errors_on_nested_writes('update', self, validated_data)
|
||||
|
@ -980,7 +983,7 @@ class ModelSerializer(Serializer):
|
|||
else:
|
||||
setattr(instance, attr, value)
|
||||
|
||||
instance.save()
|
||||
perform_update(instance)
|
||||
|
||||
# Note that many-to-many fields are set after updating instance.
|
||||
# Setting m2m fields triggers signals which could potentially change
|
||||
|
@ -991,6 +994,9 @@ class ModelSerializer(Serializer):
|
|||
|
||||
return instance
|
||||
|
||||
def perform_update(instance):
|
||||
instance.save()
|
||||
|
||||
# Determine the fields to apply...
|
||||
|
||||
def get_fields(self):
|
||||
|
|
Loading…
Reference in New Issue
Block a user