summaryrefslogtreecommitdiff
path: root/tests/model_forms
diff options
context:
space:
mode:
authorVincent-Vega <mortas.11@gmail.com>2014-06-16 11:47:45 +0400
committerTim Graham <timograham@gmail.com>2014-08-04 07:47:37 -0400
commit5e06fa1469180909c51c07151692412269e51ea3 (patch)
tree62c39302a4a59d0a5154a716b5e8f8993dfbb99b /tests/model_forms
parent399cf303cbfe086e78fd9421b75c6df55fc234d0 (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.py31
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):