diff options
| author | Tim Graham <timograham@gmail.com> | 2016-07-30 10:13:10 -0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-07-30 13:31:48 -0400 |
| commit | 4e861682904744b0ea3ead8552513c6f1a826c5a (patch) | |
| tree | c1714ce7f35a1f1829f9e9e7dc8f6e5afc1e0587 /tests/model_forms | |
| parent | 36fbf9b7d1870121269a09540d689ffc16a56d74 (diff) | |
Fixed #26970 -- Fixed crash with disabled ModelMultipleChoiceField.
Diffstat (limited to 'tests/model_forms')
| -rw-r--r-- | tests/model_forms/tests.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py index daf36c8fc2..3d65c104ff 100644 --- a/tests/model_forms/tests.py +++ b/tests/model_forms/tests.py @@ -1534,6 +1534,31 @@ class ModelChoiceFieldTests(TestCase): ['Select a valid choice. That choice is not one of the available choices.'] ) + def test_disabled_multiplemodelchoicefield(self): + class ArticleForm(forms.ModelForm): + categories = forms.ModelMultipleChoiceField(Category.objects.all(), required=False) + + class Meta: + model = Article + fields = ['categories'] + + category1 = Category.objects.create(name='cat1') + category2 = Category.objects.create(name='cat2') + article = Article.objects.create( + pub_date=datetime.date(1988, 1, 4), + writer=Writer.objects.create(name='Test writer'), + ) + article.categories.set([category1.pk]) + + form = ArticleForm(data={'categories': [category2.pk]}, instance=article) + self.assertEqual(form.errors, {}) + self.assertEqual([x.pk for x in form.cleaned_data['categories']], [category2.pk]) + # Disabled fields use the value from `instance` rather than `data`. + form = ArticleForm(data={'categories': [category2.pk]}, instance=article) + form.fields['categories'].disabled = True + self.assertEqual(form.errors, {}) + self.assertEqual([x.pk for x in form.cleaned_data['categories']], [category1.pk]) + def test_modelchoicefield_iterator(self): """ Iterator defaults to ModelChoiceIterator and can be overridden with |
