From 47095594dea630bcc93da9b714372d61a191e06f Mon Sep 17 00:00:00 2001 From: Tomi Pajunen Date: Wed, 14 Nov 2012 11:46:27 +0200 Subject: [PATCH] Raise ValidationError instead of accepting missing value --- rest_framework/fields.py | 9 +++++++-- rest_framework/tests/serializer.py | 6 +----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 7bed4ab87..2ad5eb7e1 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -351,8 +351,13 @@ class ManyRelatedMixin(object): except: # Non-form data value = data.get(self.source or field_name) - if value == [''] or value is None: - value = [] + else: + if value == ['']: + value = [] + + if value is None and self.required: + raise ValidationError("Field '%s' is required" % field_name) + into[field_name] = [self.from_native(item) for item in value] diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py index 38117b36c..e79730831 100644 --- a/rest_framework/tests/serializer.py +++ b/rest_framework/tests/serializer.py @@ -340,11 +340,7 @@ class ManyToManyTests(TestCase): """ data = {} serializer = self.serializer_class(data=data) - self.assertEqual(serializer.is_valid(), True) - instance = serializer.save() - self.assertEquals(len(ManyToManyModel.objects.all()), 2) - self.assertEquals(instance.pk, 2) - self.assertEquals(list(instance.rel.all()), []) + self.assertEqual(serializer.is_valid(), False) def test_create_empty_relationship_flat_data(self): """