1
0
mirror of https://github.com/django/django.git synced 2025-10-26 23:26:08 +00:00

[1.10.x] Fixed #26970 -- Fixed crash with disabled ModelMultipleChoiceField.

Backport of 4e86168290 from master
This commit is contained in:
Tim Graham
2016-07-30 10:13:10 -04:00
parent ec19166b1f
commit c6e5878410
2 changed files with 26 additions and 0 deletions

View File

@@ -1514,6 +1514,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])
class ModelMultipleChoiceFieldTests(TestCase):
def setUp(self):