diff options
| author | Tom Christie | 2013-01-30 04:40:39 -0800 |
|---|---|---|
| committer | Tom Christie | 2013-01-30 04:40:39 -0800 |
| commit | 2948305b98eb8b0c15453d3ffd2f9c24a88e4952 (patch) | |
| tree | 843c887b4e93d35f5bcebd352bdd4caf7b5919ca | |
| parent | 1929159db1b45ef28d1f7fdf0bea9d0867af13f3 (diff) | |
| parent | 41364b3be0536a606d9b41d3792c2e562b860360 (diff) | |
| download | django-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.py | 2 | ||||
| -rw-r--r-- | rest_framework/tests/relations.py | 14 |
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'], []) |
