mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-03 03:50:11 +03:00
Fix ModelSerializer to use the model field's error messages
This commit is contained in:
parent
00b1877106
commit
d80259f7ce
|
@ -848,6 +848,9 @@ class ModelSerializer(Serializer):
|
||||||
if model_field.help_text is not None:
|
if model_field.help_text is not None:
|
||||||
kwargs['help_text'] = model_field.help_text
|
kwargs['help_text'] = model_field.help_text
|
||||||
|
|
||||||
|
if model_field.error_messages is not None:
|
||||||
|
kwargs['error_messages'] = model_field.error_messages
|
||||||
|
|
||||||
# TODO: TypedChoiceField?
|
# TODO: TypedChoiceField?
|
||||||
if model_field.flatchoices: # This ModelField contains choices
|
if model_field.flatchoices: # This ModelField contains choices
|
||||||
kwargs['choices'] = model_field.flatchoices
|
kwargs['choices'] = model_field.flatchoices
|
||||||
|
|
|
@ -1808,14 +1808,14 @@ class SerializerDefaultTrueBoolean(TestCase):
|
||||||
self.assertEqual(serializer.data['cat'], False)
|
self.assertEqual(serializer.data['cat'], False)
|
||||||
self.assertEqual(serializer.data['dog'], False)
|
self.assertEqual(serializer.data['dog'], False)
|
||||||
|
|
||||||
|
|
||||||
class BoolenFieldTypeTest(TestCase):
|
class BoolenFieldTypeTest(TestCase):
|
||||||
'''
|
'''
|
||||||
Ensure the various Boolean based model fields are rendered as the proper
|
Ensure the various Boolean based model fields are rendered as the proper
|
||||||
field type
|
field type
|
||||||
|
|
||||||
'''
|
'''
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
'''
|
'''
|
||||||
Setup an ActionItemSerializer for BooleanTesting
|
Setup an ActionItemSerializer for BooleanTesting
|
||||||
|
@ -1831,12 +1831,46 @@ class BoolenFieldTypeTest(TestCase):
|
||||||
'''
|
'''
|
||||||
bfield = self.serializer.get_fields()['done']
|
bfield = self.serializer.get_fields()['done']
|
||||||
self.assertEqual(type(bfield), fields.BooleanField)
|
self.assertEqual(type(bfield), fields.BooleanField)
|
||||||
|
|
||||||
def test_nullbooleanfield_type(self):
|
def test_nullbooleanfield_type(self):
|
||||||
'''
|
'''
|
||||||
Test that BooleanField is infered from models.NullBooleanField
|
Test that BooleanField is infered from models.NullBooleanField
|
||||||
|
|
||||||
https://groups.google.com/forum/#!topic/django-rest-framework/D9mXEftpuQ8
|
https://groups.google.com/forum/#!topic/django-rest-framework/D9mXEftpuQ8
|
||||||
'''
|
'''
|
||||||
bfield = self.serializer.get_fields()['started']
|
bfield = self.serializer.get_fields()['started']
|
||||||
self.assertEqual(type(bfield), fields.BooleanField)
|
self.assertEqual(type(bfield), fields.BooleanField)
|
||||||
|
|
||||||
|
|
||||||
|
class ErrorMessagesOnAutogeneratedFieldsTests(TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
class EMOAFModel(RESTFrameworkModel):
|
||||||
|
char_field = models.CharField(blank=False, max_length=5, error_messages={
|
||||||
|
'required': 'required',
|
||||||
|
'max_length': 'max_length %(limit_value)d',
|
||||||
|
})
|
||||||
|
|
||||||
|
class EMOAFSerializer(serializers.ModelSerializer):
|
||||||
|
class Meta:
|
||||||
|
model = EMOAFModel
|
||||||
|
|
||||||
|
self.serializer_class = EMOAFSerializer
|
||||||
|
|
||||||
|
def error_test(self, data, expected_message):
|
||||||
|
serializer = self.serializer_class(data=data)
|
||||||
|
self.assertEqual(serializer.is_valid(), False)
|
||||||
|
self.assertEqual(len(serializer.errors), 1)
|
||||||
|
|
||||||
|
for (field_name, message) in serializer.errors.items():
|
||||||
|
self.assertEqual('char_field', field_name)
|
||||||
|
self.assertEqual(expected_message, message[0])
|
||||||
|
|
||||||
|
def test_required(self):
|
||||||
|
self.error_test({}, 'required')
|
||||||
|
|
||||||
|
def test_required(self):
|
||||||
|
self.error_test({'char_field': None}, 'required')
|
||||||
|
|
||||||
|
def test_max_length(self):
|
||||||
|
self.error_test({'char_field': 'abcdef'}, 'max_length 5')
|
||||||
|
|
Loading…
Reference in New Issue
Block a user