summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/forms/models.py2
-rw-r--r--tests/regressiontests/model_formsets_regress/tests.py11
2 files changed, 12 insertions, 1 deletions
diff --git a/django/forms/models.py b/django/forms/models.py
index 15d50419d4..cd8f027070 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -591,7 +591,7 @@ class BaseModelFormSet(BaseFormSet):
def save_existing_objects(self, commit=True):
self.changed_objects = []
self.deleted_objects = []
- if not self.get_queryset():
+ if not self.initial_forms:
return []
saved_instances = []
diff --git a/tests/regressiontests/model_formsets_regress/tests.py b/tests/regressiontests/model_formsets_regress/tests.py
index 613d77616c..f1e935e2ea 100644
--- a/tests/regressiontests/model_formsets_regress/tests.py
+++ b/tests/regressiontests/model_formsets_regress/tests.py
@@ -249,6 +249,17 @@ class FormsetTests(TestCase):
self.assertEqual(formset.extra_forms[0].initial['username'], "apollo11")
self.assertTrue(u'value="apollo12"' in formset.extra_forms[1].as_p())
+ def test_extraneous_query_is_not_run(self):
+ Formset = modelformset_factory(Network)
+ data = {u'test-TOTAL_FORMS': u'1',
+ u'test-INITIAL_FORMS': u'0',
+ u'test-MAX_NUM_FORMS': u'',
+ u'test-0-name': u'Random Place', }
+ with self.assertNumQueries(1):
+ formset = Formset(data, prefix="test")
+ formset.save()
+
+
class CustomWidget(forms.CharField):
pass