diff options
| author | Vincent-Vega <mortas.11@gmail.com> | 2014-06-16 11:47:45 +0400 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-08-04 07:47:37 -0400 |
| commit | 5e06fa1469180909c51c07151692412269e51ea3 (patch) | |
| tree | 62c39302a4a59d0a5154a716b5e8f8993dfbb99b /tests/model_forms | |
| parent | 399cf303cbfe086e78fd9421b75c6df55fc234d0 (diff) | |
Fixed #22745 -- Prevented reevaluation of ModelChoiceField's queryset when accesssing BoundField's attrs.
Thanks Christian Schmitt for review.
Diffstat (limited to 'tests/model_forms')
| -rw-r--r-- | tests/model_forms/tests.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py index 3efc724c38..e704c62d2e 100644 --- a/tests/model_forms/tests.py +++ b/tests/model_forms/tests.py @@ -13,6 +13,7 @@ from django.db import connection from django.db.models.query import EmptyQuerySet from django.forms.models import (construct_instance, fields_for_model, model_to_dict, modelform_factory, ModelFormMetaclass) +from django.template import Template, Context from django.test import TestCase, skipUnlessDBFeature from django.utils._os import upath from django.utils import six @@ -1466,6 +1467,21 @@ class ModelChoiceFieldTests(TestCase): self.assertTrue(field1 is not ModelChoiceForm.base_fields['category']) self.assertTrue(field1.widget.choices.field is field1) + def test_modelchoicefield_22745(self): + """ + #22745 -- Make sure that ModelChoiceField with RadioSelect widget + doesn't produce unnecessary db queries when accessing its BoundField's + attrs. + """ + class ModelChoiceForm(forms.Form): + category = forms.ModelChoiceField(Category.objects.all(), widget=forms.RadioSelect) + + form = ModelChoiceForm() + field = form['category'] # BoundField + template = Template('{{ field.name }}{{ field }}{{ field.help_text }}') + with self.assertNumQueries(1): + template.render(Context({'field': field})) + class ModelMultipleChoiceFieldTests(TestCase): def setUp(self): @@ -1604,6 +1620,21 @@ class ModelMultipleChoiceFieldTests(TestCase): self.assertTrue(form.is_valid()) self.assertTrue(form.has_changed()) + def test_model_multiple_choice_field_22745(self): + """ + #22745 -- Make sure that ModelMultipleChoiceField with + CheckboxSelectMultiple widget doesn't produce unnecessary db queries + when accessing its BoundField's attrs. + """ + class ModelMultipleChoiceForm(forms.Form): + categories = forms.ModelMultipleChoiceField(Category.objects.all(), widget=forms.CheckboxSelectMultiple) + + form = ModelMultipleChoiceForm() + field = form['categories'] # BoundField + template = Template('{{ field.name }}{{ field }}{{ field.help_text }}') + with self.assertNumQueries(1): + template.render(Context({'field': field})) + class ModelOneToOneFieldTests(TestCase): def test_modelform_onetoonefield(self): |
