diff options
| author | Pablo Mouzo <pablomouzo@gmail.com> | 2013-09-07 15:58:32 -0500 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2013-09-07 20:00:38 -0400 |
| commit | b11564fd36587b1077bf7d77b62b7879cc08c382 (patch) | |
| tree | d1357d01faedc58ebb0a9a8c622c7b60fe3c2ce7 /tests | |
| parent | c348550d35276008018a42c002251b0e2fe9cfe1 (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.py | 26 |
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) |
