mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-27 08:29:59 +03:00
overriding restore_object on a ModelSerializer causes the validation for model fields to be skipped
This commit is contained in:
parent
e67b23f1ac
commit
033acfce88
|
@ -54,6 +54,19 @@ class ActionItemSerializer(serializers.ModelSerializer):
|
||||||
model = ActionItem
|
model = ActionItem
|
||||||
|
|
||||||
|
|
||||||
|
class ActionItemUpdateSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
|
def restore_object(self, data, instance=None):
|
||||||
|
if instance is None:
|
||||||
|
return ActionItem(**data)
|
||||||
|
for key, val in data.items():
|
||||||
|
setattr(instance, key, val)
|
||||||
|
return instance
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
model = ActionItem
|
||||||
|
|
||||||
|
|
||||||
class PersonSerializer(serializers.ModelSerializer):
|
class PersonSerializer(serializers.ModelSerializer):
|
||||||
info = serializers.Field(source='info')
|
info = serializers.Field(source='info')
|
||||||
|
|
||||||
|
@ -300,6 +313,15 @@ class ValidationTests(TestCase):
|
||||||
self.assertEquals(serializer.is_valid(), False)
|
self.assertEquals(serializer.is_valid(), False)
|
||||||
self.assertEquals(serializer.errors, {'title': [u'Ensure this value has at most 200 characters (it has 201).']})
|
self.assertEquals(serializer.errors, {'title': [u'Ensure this value has at most 200 characters (it has 201).']})
|
||||||
|
|
||||||
|
def test_modelserializer_update_max_length_exceeded(self):
|
||||||
|
data = {
|
||||||
|
'title': 'x' * 201,
|
||||||
|
}
|
||||||
|
serializer = ActionItemUpdateSerializer(data=data)
|
||||||
|
self.assertEquals(serializer.is_valid(), False)
|
||||||
|
self.assertEquals(serializer.errors, {'title': [u'Ensure this value has at most 200 characters (it has 201).']})
|
||||||
|
|
||||||
|
|
||||||
def test_default_modelfield_max_length_exceeded(self):
|
def test_default_modelfield_max_length_exceeded(self):
|
||||||
data = {
|
data = {
|
||||||
'title': 'Testing "info" field...',
|
'title': 'Testing "info" field...',
|
||||||
|
|
Loading…
Reference in New Issue
Block a user