From e704559e567c46d46fe9268147e1a4a2cf83f4a2 Mon Sep 17 00:00:00 2001 From: Brian Rosner Date: Wed, 27 Aug 2008 16:44:52 +0000 Subject: [PATCH] Fixed #8435 -- Documented the `prefix` option on formsets. git-svn-id: http://code.djangoproject.com/svn/django/trunk@8631 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- docs/topics/forms/formsets.txt | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/docs/topics/forms/formsets.txt b/docs/topics/forms/formsets.txt index 5d1e3ed729..ca7aa2e14f 100644 --- a/docs/topics/forms/formsets.txt +++ b/docs/topics/forms/formsets.txt @@ -327,3 +327,32 @@ with the management form:: The above ends up calling the ``as_table`` method on the formset class. + +Using more than one formset in a view +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +You are able to use more than one formset in a view if you like. Formsets +borrow much of its behavior from forms. With that said you are able to use +``prefix`` to prefix formset form field names with a given value to allow +more than one formset to be sent to a view without name clashing. Lets take +a look at how this might be accomplished:: + + def manage_articles(request): + ArticleFormSet = formset_factory(ArticleForm) + BookFormSet = formset_factory(BookForm) + if request.method == 'POST': + article_formset = ArticleFormSet(request.POST, request.FILES, prefix='articles') + book_formset = BookFormSet(request.POST, request.FILES, prefix='books') + if article_formset.is_valid() and book_formset.is_valid(): + # do something with the cleaned_data on the formsets. + else: + article_formset = ArticleFormSet(prefix='articles') + book_formset = BookFormSet(prefix='books') + return render_to_response('manage_articles.html', { + 'article_formset': article_formset, + 'book_formset': book_formset, + }) + +You would then render the formsets as normal. It is important to point out +that you need to pass ``prefix`` on both the POST and non-POST cases so that +it is rendered and processed correctly.