mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-08-03 20:10:10 +03:00
Merge ad1d375e54
into 4f252086df
This commit is contained in:
commit
de75bf8baf
|
@ -900,6 +900,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
|
||||
|
|
|
@ -1344,7 +1344,8 @@ class SeveralChoicesModel(models.Model):
|
|||
max_length=10,
|
||||
choices=[('rock', 'Rock'), ('metal', 'Metal'), ('grunge', 'Grunge')],
|
||||
blank=True,
|
||||
default='metal'
|
||||
default='metal',
|
||||
error_messages={'invalid_choice': 'The choice %(value)s is invalid. Please choose one of ["rock", "metal", "grunge"]'}
|
||||
)
|
||||
|
||||
|
||||
|
@ -1388,6 +1389,13 @@ class SerializerChoiceFields(TestCase):
|
|||
BLANK_CHOICE_DASH + [('rock', 'Rock'), ('metal', 'Metal'), ('grunge', 'Grunge')]
|
||||
)
|
||||
|
||||
def test_field_propagates_error_messages(self):
|
||||
data = {'color': 'blue', 'music_genre': 'grindcore'}
|
||||
serializer = self.several_choices_serializer(data=data)
|
||||
self.assertFalse(serializer.is_valid())
|
||||
expected_errors = {'music_genre': ['The choice grindcore is invalid. Please choose one of ["rock", "metal", "grunge"]']}
|
||||
self.assertEqual(serializer.errors, expected_errors)
|
||||
|
||||
|
||||
# Regression tests for #675
|
||||
class Ticket(models.Model):
|
||||
|
|
Loading…
Reference in New Issue
Block a user