summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPablo Mouzo <pablomouzo@gmail.com>2013-09-07 15:58:32 -0500
committerTim Graham <timograham@gmail.com>2013-09-07 20:00:38 -0400
commitb11564fd36587b1077bf7d77b62b7879cc08c382 (patch)
treed1357d01faedc58ebb0a9a8c622c7b60fe3c2ce7 /tests
parentc348550d35276008018a42c002251b0e2fe9cfe1 (diff)
Fixed #16869 -- BaseGenericInlineFormSet.save_new should use form's save() method
Thanks mattaustin for the report and Pablo Recio (pyriku) for the patch.
Diffstat (limited to 'tests')
-rw-r--r--tests/generic_relations/tests.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/tests/generic_relations/tests.py b/tests/generic_relations/tests.py
index 253eb76e32..dde00ccc8a 100644
--- a/tests/generic_relations/tests.py
+++ b/tests/generic_relations/tests.py
@@ -306,6 +306,32 @@ class GenericInlineFormsetTest(TestCase):
form = Formset().forms[0]
self.assertIsInstance(form['tag'].field.widget, CustomWidget)
+ def test_save_new_uses_form_save(self):
+ """
+ Regression for #16260: save_new should call form.save()
+ """
+ class SaveTestForm(forms.ModelForm):
+ def save(self, *args, **kwargs):
+ self.instance.saved_by = "custom method"
+ return super(SaveTestForm, self).save(*args, **kwargs)
+
+ Formset = generic_inlineformset_factory(
+ ForProxyModelModel, fields='__all__', form=SaveTestForm)
+
+ instance = ProxyRelatedModel.objects.create()
+
+ data = {
+ 'form-TOTAL_FORMS': '1',
+ 'form-INITIAL_FORMS': '0',
+ 'form-MAX_NUM_FORMS': '',
+ 'form-0-title': 'foo',
+ }
+
+ formset = Formset(data, instance=instance, prefix='form')
+ self.assertTrue(formset.is_valid())
+ new_obj = formset.save()[0]
+ self.assertEqual(new_obj.saved_by, "custom method")
+
def test_save_new_for_proxy(self):
Formset = generic_inlineformset_factory(ForProxyModelModel,
fields='__all__', for_concrete_model=False)