Merge pull request #3801 from koordinates/fix-nested-validation-error

Fix nested validation error being rendered incorrectly.
This commit is contained in:
Tom Christie 2016-01-07 09:22:23 +00:00
commit f01a3d9c36
2 changed files with 19 additions and 1 deletions

View File

@ -306,7 +306,7 @@ def get_validation_error_detail(exc):
# If errors may be a dict we use the standard {key: list of values}.
# Here we ensure that all the values are *lists* of errors.
return {
key: value if isinstance(value, list) else [value]
key: value if isinstance(value, (list, dict)) else [value]
for key, value in exc.detail.items()
}
elif isinstance(exc.detail, list):

View File

@ -49,6 +49,24 @@ class ShouldValidateModelSerializer(serializers.ModelSerializer):
fields = ('renamed',)
class TestNestedValidationError(TestCase):
def test_nested_validation_error_detail(self):
"""
Ensure nested validation error detail is rendered correctly.
"""
e = serializers.ValidationError({
'nested': {
'field': ['error'],
}
})
self.assertEqual(serializers.get_validation_error_detail(e), {
'nested': {
'field': ['error'],
}
})
class TestPreSaveValidationExclusionsSerializer(TestCase):
def test_renamed_fields_are_model_validated(self):
"""