From 4ef10f245ada0c7d5ae8dc31eebffa63790d40fb Mon Sep 17 00:00:00 2001 From: Anders Steinlein Date: Wed, 5 Mar 2014 21:19:40 +0100 Subject: Fixed #17642 -- Added min_num support to modelformsets, inlines, and the admin. Thanks Stephen Burrows for work on the patch as well. Forwardport of 2914f66983a92fcae55673c517dd8d01e8c238c4 from stable/1.7.x --- tests/model_formsets/tests.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'tests/model_formsets') diff --git a/tests/model_formsets/tests.py b/tests/model_formsets/tests.py index b5e410738e..ed74dff2ed 100644 --- a/tests/model_formsets/tests.py +++ b/tests/model_formsets/tests.py @@ -376,6 +376,33 @@ class ModelFormsetTest(TestCase): '', ]) + def test_min_num(self): + # Test the behavior of min_num with model formsets. It should be + # added to extra. + qs = Author.objects.none() + + AuthorFormSet = modelformset_factory(Author, fields="__all__", extra=0) + formset = AuthorFormSet(queryset=qs) + self.assertEqual(len(formset.forms), 0) + + AuthorFormSet = modelformset_factory(Author, fields="__all__", min_num=1, extra=0) + formset = AuthorFormSet(queryset=qs) + self.assertEqual(len(formset.forms), 1) + + AuthorFormSet = modelformset_factory(Author, fields="__all__", min_num=1, extra=1) + formset = AuthorFormSet(queryset=qs) + self.assertEqual(len(formset.forms), 2) + + def test_min_num_with_existing(self): + # Test the behavior of min_num with existing objects. + # See #22628 - this will change when that's fixed. + Author.objects.create(name='Charles Baudelaire') + qs = Author.objects.all() + + AuthorFormSet = modelformset_factory(Author, fields="__all__", extra=0, min_num=1) + formset = AuthorFormSet(queryset=qs) + self.assertEqual(len(formset.forms), 2) + def test_custom_save_method(self): class PoetForm(forms.ModelForm): def save(self, commit=True): -- cgit v1.3