summaryrefslogtreecommitdiff
path: root/tests/model_forms
diff options
context:
space:
mode:
authorAlex Hill <alex@hill.net.au>2016-08-03 14:18:48 +0800
committerTim Graham <timograham@gmail.com>2016-08-08 13:41:05 -0400
commit74105b26365c6e862f347656cc085faf18cc0bb1 (patch)
tree1577ca4e755ca60add1f838d6c854aebd4ecbaa3 /tests/model_forms
parent29a3f8b4bb1c4174a2b63766018b9106593b8ab6 (diff)
Fixed #27002 -- Prevented double query when rendering ModelChoiceField.
Diffstat (limited to 'tests/model_forms')
-rw-r--r--tests/model_forms/tests.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py
index 8c706f1a56..085a95733e 100644
--- a/tests/model_forms/tests.py
+++ b/tests/model_forms/tests.py
@@ -1576,11 +1576,22 @@ class ModelChoiceFieldTests(TestCase):
field = CustomModelChoiceField(Category.objects.all())
self.assertIsInstance(field.choices, CustomModelChoiceIterator)
- def test_radioselect_num_queries(self):
+ def test_modelchoicefield_num_queries(self):
+ """
+ Widgets that render multiple subwidgets shouldn't make more than one
+ database query.
+ """
+ categories = Category.objects.all()
+
class CategoriesForm(forms.Form):
- categories = forms.ModelChoiceField(Category.objects.all(), widget=forms.RadioSelect)
+ radio = forms.ModelChoiceField(queryset=categories, widget=forms.RadioSelect)
+ checkbox = forms.ModelMultipleChoiceField(queryset=categories, widget=forms.CheckboxSelectMultiple)
+
+ template = Template("""
+ {% for widget in form.checkbox %}{{ widget }}{% endfor %}
+ {% for widget in form.radio %}{{ widget }}{% endfor %}
+ """)
- template = Template('{% for widget in form.categories %}{{ widget }}{% endfor %}')
with self.assertNumQueries(2):
template.render(Context({'form': CategoriesForm()}))