diff options
| author | Alex Hill <alex@hill.net.au> | 2016-08-03 14:18:48 +0800 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-08-08 13:41:05 -0400 |
| commit | 74105b26365c6e862f347656cc085faf18cc0bb1 (patch) | |
| tree | 1577ca4e755ca60add1f838d6c854aebd4ecbaa3 /tests/model_forms | |
| parent | 29a3f8b4bb1c4174a2b63766018b9106593b8ab6 (diff) | |
Fixed #27002 -- Prevented double query when rendering ModelChoiceField.
Diffstat (limited to 'tests/model_forms')
| -rw-r--r-- | tests/model_forms/tests.py | 17 |
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()})) |
