diff --git a/rest_framework/fields.py b/rest_framework/fields.py index d3ef8f779..a2649297e 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -384,6 +384,10 @@ class ManyRelatedMixin(object): 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 780177aa0..f3d7e5b21 100644 --- a/rest_framework/tests/serializer.py +++ b/rest_framework/tests/serializer.py @@ -411,6 +411,14 @@ class ManyToManyTests(TestCase): self.assertEquals(instance.pk, 1) self.assertEquals(list(instance.rel.all()), []) + def test_create_relationship_missing(self): + """ + Create an instance of a model with a missing ManyToMany relationship + """ + data = {} + serializer = self.serializer_class(data=data) + self.assertEqual(serializer.is_valid(), False) + def test_create_empty_relationship_flat_data(self): """ Create an instance of a model with a ManyToMany relationship,