diff options
| author | Jannis Leidel <jannis@leidel.info> | 2012-02-04 16:05:39 +0000 |
|---|---|---|
| committer | Jannis Leidel <jannis@leidel.info> | 2012-02-04 16:05:39 +0000 |
| commit | 4d8a0f8902dd55348fbaf897048bef1cba285f05 (patch) | |
| tree | 5251beb4032a65e4a0054d60671353ae3d0d354a | |
| parent | 52d72a5a3e62ed8fde5796e0e131a8f7a5aefac3 (diff) | |
Fixed #17594 -- Stopped ModelFormset.save from running a SELECT query by relying on the fact that the initial form is already set. Thanks, tswicegood.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@17434 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/forms/models.py | 2 | ||||
| -rw-r--r-- | tests/regressiontests/model_formsets_regress/tests.py | 11 |
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 |
