diff options
| author | Tom Christie | 2014-11-03 14:01:02 +0000 | 
|---|---|---|
| committer | Tom Christie | 2014-11-03 14:01:02 +0000 | 
| commit | 003c42b0f51f9bfa93964be69fb8cb68b7394280 (patch) | |
| tree | fb357dc2ae004dd827392f8ec2dc86d3b1d5c4cc | |
| parent | d27b8cc09b83bac10346effa1021493d2835b794 (diff) | |
| download | django-rest-framework-003c42b0f51f9bfa93964be69fb8cb68b7394280.tar.bz2 | |
Use invalid_data key for error message. Closes #2002.
| -rw-r--r-- | rest_framework/serializers.py | 10 | ||||
| -rw-r--r-- | tests/test_validation.py | 7 | 
2 files changed, 14 insertions, 3 deletions
| diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 82e932dd..f00b685f 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -15,6 +15,7 @@ from django.db import models  from django.db.models.fields import FieldDoesNotExist  from django.utils import six  from django.utils.datastructures import SortedDict +from django.utils.translation import ugettext_lazy as _  from rest_framework.exceptions import ValidationError  from rest_framework.fields import empty, set_value, Field, SkipField  from rest_framework.settings import api_settings @@ -282,6 +283,10 @@ class SerializerMetaclass(type):  @six.add_metaclass(SerializerMetaclass)  class Serializer(BaseSerializer): +    default_error_messages = { +        'invalid': _('Invalid data. Expected a dictionary, but got {datatype}.') +    } +      @property      def fields(self):          if not hasattr(self, '_fields'): @@ -339,8 +344,11 @@ class Serializer(BaseSerializer):              return None          if not isinstance(data, dict): +            message = self.error_messages['invalid'].format( +                datatype=type(data).__name__ +            )              raise ValidationError({ -                api_settings.NON_FIELD_ERRORS_KEY: ['Invalid data'] +                api_settings.NON_FIELD_ERRORS_KEY: [message]              })          value = self.to_internal_value(data) diff --git a/tests/test_validation.py b/tests/test_validation.py index 4d64e6e1..1b6aa358 100644 --- a/tests/test_validation.py +++ b/tests/test_validation.py @@ -87,8 +87,11 @@ class TestAvoidValidation(TestCase):      def test_serializer_errors_has_only_invalid_data_error(self):          serializer = ValidationSerializer(data='invalid data')          self.assertFalse(serializer.is_valid()) -        self.assertDictEqual(serializer.errors, -                             {'non_field_errors': ['Invalid data']}) +        self.assertDictEqual(serializer.errors, { +            'non_field_errors': [ +                'Invalid data. Expected a dictionary, but got unicode.' +            ] +        })  # regression tests for issue: 1493 | 
