aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTom Christie2013-01-30 04:40:39 -0800
committerTom Christie2013-01-30 04:40:39 -0800
commit2948305b98eb8b0c15453d3ffd2f9c24a88e4952 (patch)
tree843c887b4e93d35f5bcebd352bdd4caf7b5919ca
parent1929159db1b45ef28d1f7fdf0bea9d0867af13f3 (diff)
parent41364b3be0536a606d9b41d3792c2e562b860360 (diff)
downloaddjango-rest-framework-2948305b98eb8b0c15453d3ffd2f9c24a88e4952.tar.bz2
Merge pull request #632 from fernandogrd/master
Fix processing of ManyToManyField when it is empty
-rw-r--r--rest_framework/relations.py2
-rw-r--r--rest_framework/tests/relations.py14
2 files changed, 15 insertions, 1 deletions
diff --git a/rest_framework/relations.py b/rest_framework/relations.py
index af63ceaa..dc0a73e6 100644
--- a/rest_framework/relations.py
+++ b/rest_framework/relations.py
@@ -148,7 +148,7 @@ class ManyRelatedMixin(object):
value = data.getlist(self.source or field_name)
except:
# Non-form data
- value = data.get(self.source or field_name)
+ value = data.get(self.source or field_name, [])
else:
if value == ['']:
value = []
diff --git a/rest_framework/tests/relations.py b/rest_framework/tests/relations.py
index 91daea8a..edc85f9e 100644
--- a/rest_framework/tests/relations.py
+++ b/rest_framework/tests/relations.py
@@ -31,3 +31,17 @@ class FieldTests(TestCase):
field = serializers.SlugRelatedField(queryset=NullModel.objects.all(), slug_field='pk')
self.assertRaises(serializers.ValidationError, field.from_native, '')
self.assertRaises(serializers.ValidationError, field.from_native, [])
+
+
+class TestManyRelateMixin(TestCase):
+ def test_missing_many_to_many_related_field(self):
+ '''
+ Regression test for #632
+
+ https://github.com/tomchristie/django-rest-framework/pull/632
+ '''
+ field = serializers.ManyRelatedField(read_only=False)
+
+ into = {}
+ field.field_from_native({}, None, 'field_name', into)
+ self.assertEqual(into['field_name'], [])