From d0d3e6792da9e716e547f23dfd44706d2bab3c8e Mon Sep 17 00:00:00 2001 From: Russell Keith-Magee Date: Wed, 12 May 2010 11:56:42 +0000 Subject: Fixed #13524 -- Added backwards compatibility and feature notes regarding admin inlines and formsets. Thanks to Ramiro Morales and Gabriel Hurley. git-svn-id: http://code.djangoproject.com/svn/django/trunk@13241 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- tests/modeltests/model_formsets/models.py | 6 ++++ tests/regressiontests/forms/formsets.py | 46 ++++++++++++++++++++++++++++++- 2 files changed, 51 insertions(+), 1 deletion(-) (limited to 'tests') diff --git a/tests/modeltests/model_formsets/models.py b/tests/modeltests/model_formsets/models.py index 6d5b81dd8a..d5825313ec 100644 --- a/tests/modeltests/model_formsets/models.py +++ b/tests/modeltests/model_formsets/models.py @@ -368,16 +368,22 @@ the creation of new inlines beyond max_num. >>> AuthorFormSet = modelformset_factory(Author, max_num=None, extra=3) >>> formset = AuthorFormSet(queryset=qs) +>>> len(formset.forms) +6 >>> len(formset.extra_forms) 3 >>> AuthorFormSet = modelformset_factory(Author, max_num=4, extra=3) >>> formset = AuthorFormSet(queryset=qs) +>>> len(formset.forms) +4 >>> len(formset.extra_forms) 1 >>> AuthorFormSet = modelformset_factory(Author, max_num=0, extra=3) >>> formset = AuthorFormSet(queryset=qs) +>>> len(formset.forms) +3 >>> len(formset.extra_forms) 0 diff --git a/tests/regressiontests/forms/formsets.py b/tests/regressiontests/forms/formsets.py index ec7fc9ba11..fade987c26 100644 --- a/tests/regressiontests/forms/formsets.py +++ b/tests/regressiontests/forms/formsets.py @@ -599,6 +599,24 @@ True # Base case for max_num. +# When not passed, max_num will take its default value of None, i.e. unlimited +# number of forms, only controlled by the value of the extra parameter. + +>>> LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=3) +>>> formset = LimitedFavoriteDrinkFormSet() +>>> for form in formset.forms: +... print form + + + + +# If max_num is 0 then no form is rendered at all. + +>>> LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=3, max_num=0) +>>> formset = LimitedFavoriteDrinkFormSet() +>>> for form in formset.forms: +... print form + >>> LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=5, max_num=2) >>> formset = LimitedFavoriteDrinkFormSet() >>> for form in formset.forms: @@ -606,7 +624,7 @@ True -# Ensure the that max_num has no affect when extra is less than max_forms. +# Ensure that max_num has no effect when extra is less than max_num. >>> LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=1, max_num=2) >>> formset = LimitedFavoriteDrinkFormSet() @@ -616,6 +634,32 @@ True # max_num with initial data +# When not passed, max_num will take its default value of None, i.e. unlimited +# number of forms, only controlled by the values of the initial and extra +# parameters. + +>>> initial = [ +... {'name': 'Fernet and Coke'}, +... ] +>>> LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=1) +>>> formset = LimitedFavoriteDrinkFormSet(initial=initial) +>>> for form in formset.forms: +... print form + + + +# If max_num is 0 then no form is rendered at all, even if extra and initial +# are specified. + +>>> initial = [ +... {'name': 'Fernet and Coke'}, +... {'name': 'Bloody Mary'}, +... ] +>>> LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=1, max_num=0) +>>> formset = LimitedFavoriteDrinkFormSet(initial=initial) +>>> for form in formset.forms: +... print form + # More initial forms than max_num will result in only the first max_num of # them to be displayed with no extra forms. -- cgit v1.3