mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-05 04:50:12 +03:00
Make model save and create methods more customizable in serializers
This commit is contained in:
parent
544967f36e
commit
a7570a3175
|
@ -661,6 +661,9 @@ class ModelSerializer(Serializer):
|
||||||
})
|
})
|
||||||
_related_class = PrimaryKeyRelatedField
|
_related_class = PrimaryKeyRelatedField
|
||||||
|
|
||||||
|
def create_instance(self, model_class, validated_data):
|
||||||
|
return model_class.objects.create(**validated_data)
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
"""
|
"""
|
||||||
We have a bit of extra checking around this in order to provide
|
We have a bit of extra checking around this in order to provide
|
||||||
|
@ -696,7 +699,7 @@ class ModelSerializer(Serializer):
|
||||||
many_to_many[field_name] = validated_data.pop(field_name)
|
many_to_many[field_name] = validated_data.pop(field_name)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
instance = ModelClass.objects.create(**validated_data)
|
instance = self.create_instance(ModelClass, validated_data)
|
||||||
except TypeError as exc:
|
except TypeError as exc:
|
||||||
msg = (
|
msg = (
|
||||||
'Got a `TypeError` when calling `%s.objects.create()`. '
|
'Got a `TypeError` when calling `%s.objects.create()`. '
|
||||||
|
@ -721,13 +724,15 @@ class ModelSerializer(Serializer):
|
||||||
|
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
|
def save_instance(self, instance):
|
||||||
|
instance.save()
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
def update(self, instance, validated_data):
|
||||||
raise_errors_on_nested_writes('update', self)
|
raise_errors_on_nested_writes('update', self)
|
||||||
|
|
||||||
for attr, value in validated_data.items():
|
for attr, value in validated_data.items():
|
||||||
setattr(instance, attr, value)
|
setattr(instance, attr, value)
|
||||||
instance.save()
|
self.save_instance(instance)
|
||||||
|
|
||||||
return instance
|
return instance
|
||||||
|
|
||||||
def get_validators(self):
|
def get_validators(self):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user