diff options
| author | David Smith <smithdc@gmail.com> | 2020-06-19 22:46:25 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2020-06-24 09:26:25 +0200 |
| commit | 162765d6c3182e36095d29543e21b44b908625fc (patch) | |
| tree | 73e252e23ec3986a4a7a2750c5ff36c7e2ed0330 /tests/model_formsets | |
| parent | 2e8941b6f90e65ffad3f07083b8de59e8ed29767 (diff) | |
Fixed #9061 -- Allowed FormSets to disable deleting extra forms.
Thanks to Dan Ward for the initial patch.
Diffstat (limited to 'tests/model_formsets')
| -rw-r--r-- | tests/model_formsets/tests.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/model_formsets/tests.py b/tests/model_formsets/tests.py index 8c6d87e59c..a01dd75e87 100644 --- a/tests/model_formsets/tests.py +++ b/tests/model_formsets/tests.py @@ -1916,3 +1916,57 @@ class TestModelFormsetOverridesTroughFormMeta(TestCase): formset.non_form_errors(), ['Please submit 20 or fewer forms.'], ) + + def test_modelformset_factory_can_delete_extra(self): + AuthorFormSet = modelformset_factory( + Author, + fields='__all__', + can_delete=True, + can_delete_extra=True, + extra=2, + ) + formset = AuthorFormSet() + self.assertEqual(len(formset), 2) + self.assertIn('DELETE', formset.forms[0].fields) + self.assertIn('DELETE', formset.forms[1].fields) + + def test_modelformset_factory_disable_delete_extra(self): + AuthorFormSet = modelformset_factory( + Author, + fields='__all__', + can_delete=True, + can_delete_extra=False, + extra=2, + ) + formset = AuthorFormSet() + self.assertEqual(len(formset), 2) + self.assertNotIn('DELETE', formset.forms[0].fields) + self.assertNotIn('DELETE', formset.forms[1].fields) + + def test_inlineformset_factory_can_delete_extra(self): + BookFormSet = inlineformset_factory( + Author, + Book, + fields='__all__', + can_delete=True, + can_delete_extra=True, + extra=2, + ) + formset = BookFormSet() + self.assertEqual(len(formset), 2) + self.assertIn('DELETE', formset.forms[0].fields) + self.assertIn('DELETE', formset.forms[1].fields) + + def test_inlineformset_factory_can_not_delete_extra(self): + BookFormSet = inlineformset_factory( + Author, + Book, + fields='__all__', + can_delete=True, + can_delete_extra=False, + extra=2, + ) + formset = BookFormSet() + self.assertEqual(len(formset), 2) + self.assertNotIn('DELETE', formset.forms[0].fields) + self.assertNotIn('DELETE', formset.forms[1].fields) |
