Fix #1643 issue: empty values in reverse nested OneToMany are not validated by the serializer

This commit is contained in:
khamaileon 2014-06-16 14:24:12 +02:00
parent e11f41ebc4
commit 0779dcb748
2 changed files with 8 additions and 1 deletions

View File

@ -446,7 +446,7 @@ class BaseSerializer(WritableField):
if not self._errors:
into.update(reverted_data)
else:
if value in (None, ''):
if value in (None, '') and not self.many:
into[(self.source or field_name)] = None
else:
# Set the serializer object if it exists

View File

@ -283,6 +283,13 @@ class ReverseNestedOneToManyTests(TestCase):
self.assertFalse(serializer.is_valid())
self.assertEqual(serializer.errors, {'sources': [{}, {}, {}, {'name': ['This field is required.']}]})
def test_one_to_many_create_with_empty_string(self):
data = {'id': 1, 'name': 'target-1', 'sources': ''}
instance = OneToManyTarget.objects.get(pk=1)
serializer = self.Serializer(instance, data=data)
self.assertFalse(serializer.is_valid())
self.assertEqual(serializer.errors, {'sources': [{u'non_field_errors': [u'Expected a list of items.']}]})
def test_one_to_many_update(self):
data = {'id': 1, 'name': 'target-1-updated', 'sources': [{'id': 1, 'name': 'source-1-updated'},
{'id': 2, 'name': 'source-2'},