From 530670e27f338923c0199dc274f2ecf71af5d762 Mon Sep 17 00:00:00 2001 From: Brian Rosner Date: Wed, 11 Jun 2008 03:58:01 +0000 Subject: newforms-admin: Fixed #6075 -- Implemented max_num on formsets and model formsets. Added a hook on InlineModelAdmin to customize in the admin interface. git-svn-id: http://code.djangoproject.com/svn/django/branches/newforms-admin@7613 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/modelforms.txt | 28 ++++++++++++++++++++++++++++ docs/newforms.txt | 16 ++++++++++++++++ 2 files changed, 44 insertions(+) (limited to 'docs') diff --git a/docs/modelforms.txt b/docs/modelforms.txt index b9332bc59e..f2222c1fc0 100644 --- a/docs/modelforms.txt +++ b/docs/modelforms.txt @@ -449,6 +449,34 @@ model instances without any database interaction:: This gives you the ability to attach data to the instances before saving them to the database. +Limiting the number of objects editable +--------------------------------------- + +Similar to regular formsets you can use the ``max_num`` parameter to +``modelformset_factory`` to limit the number of forms displayed. With +model formsets this will properly limit the query to only select the maximum +number of objects needed:: + + >>> Author.objects.order_by('name') + [, , ] + + >>> AuthorFormSet = modelformset_factory(Author, max_num=2, extra=1) + >>> formset = AuthorFormSet(queryset=Author.objects.order_by('name')) + >>> formset.initial + [{'id': 1, 'name': u'Charles Baudelaire'}, {'id': 3, 'name': u'Paul Verlaine'}] + +If the value of ``max_num`` is less than the total objects returned it will +fill the rest with extra forms:: + + >>> AuthorFormSet = modelformset_factory(Author, max_num=4, extra=1) + >>> formset = AuthorFormSet(queryset=Author.objects.order_by('name')) + >>> for form in formset.forms: + ... print form.as_table() + + + + + Using ``inlineformset_factory`` ------------------------------- diff --git a/docs/newforms.txt b/docs/newforms.txt index ad3f81cb6c..f81fcfc8dc 100644 --- a/docs/newforms.txt +++ b/docs/newforms.txt @@ -2230,6 +2230,22 @@ There are now a total of three forms showing above. One for the initial data that was passed in and two extra forms. Also note that we are passing in a list of dictionaries as the initial data. +Limiting the maximum number of forms +------------------------------------ + +The ``max_num`` parameter to ``formset_factory`` gives you the ability to +force the maximum number of forms the formset will display:: + + >>> ArticleFormSet = formset_factory(ArticleForm, extra=2, max_num=1) + >>> formset = ArticleFormset() + >>> for form in formset.forms: + ... print form.as_table() + + + +The default value of ``max_num`` is ``0`` which is the same as saying put no +limit on the number forms displayed. + Formset validation ------------------ -- cgit v1.3