summaryrefslogtreecommitdiff
path: root/tests/model_forms
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2016-07-30 10:13:10 -0400
committerTim Graham <timograham@gmail.com>2016-07-30 13:31:48 -0400
commit4e861682904744b0ea3ead8552513c6f1a826c5a (patch)
treec1714ce7f35a1f1829f9e9e7dc8f6e5afc1e0587 /tests/model_forms
parent36fbf9b7d1870121269a09540d689ffc16a56d74 (diff)
Fixed #26970 -- Fixed crash with disabled ModelMultipleChoiceField.
Diffstat (limited to 'tests/model_forms')
-rw-r--r--tests/model_forms/tests.py25
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