Fix ModelSerializer to use the model field's error messages

This commit is contained in:
Alex Burgel 2013-05-24 17:45:57 -04:00
parent 00b1877106
commit d80259f7ce
2 changed files with 43 additions and 6 deletions

View File

@ -848,6 +848,9 @@ class ModelSerializer(Serializer):
if model_field.help_text is not None:
kwargs['help_text'] = model_field.help_text
if model_field.error_messages is not None:
kwargs['error_messages'] = model_field.error_messages
# TODO: TypedChoiceField?
if model_field.flatchoices: # This ModelField contains choices
kwargs['choices'] = model_field.flatchoices

View File

@ -1840,3 +1840,37 @@ class BoolenFieldTypeTest(TestCase):
'''
bfield = self.serializer.get_fields()['started']
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')