Opened 10 years ago

Closed 10 years ago

Last modified 6 years ago

#8435 closed (fixed)

Document formset's `prefix` argument.

Reported by: takkun Owned by: nobody
Component: Documentation Version: 1.0-alpha-2
Severity: Keywords: formsets
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:

Description (last modified by Jacob)

See Brian's comment; this is a doc issue. Original report follows -- JKM

As of this moment one is able to utilize multiple formsets within a single view, as long as one does not use the same variable name for the fields in the respective forms. But this breaks down on the template level, specifically the management_form portion of formsets. The variables form-TOTAL_FORMS and form-INITIAL_FORMS are shared for all formsets when you include each formset's management_form in the template: {{ formset.management_form }}.

The problem isn't immediately apparent since the template will render correctly due to the fact that you call the management_form for each formset, thus in turn over-writing the variables form-TOTAL_FORMS and form-INITIAL_FORMS each time you do. The trouble begins when you start processing the request.POST data.

Let's say you have 2 formsets displayed in a template, the first one you configure with 4 fields and the second with 2 fields. When you then process the POST data in the view by calling "for form in formset1.forms" it will only iterate 2 times oppose to the 4 times one would initially expect, all due to the fact that formset2's management_form has now over-written the form-TOTAL_FORMS variable; thus you lose whatever data was submitted in the remaining 2 fields in formset1.

Change History (4)

comment:1 Changed 10 years ago by Brian Rosner

milestone: 1.0 maybe1.0
Triage Stage: UnreviewedAccepted

This ticket is actually invalid. You need to use prefix just like a Form to allow for more than one formset to co-exist in POST data. However, this is not documented. Leaving opening for the documentation change.

comment:2 Changed 10 years ago by Jacob

Component: FormsDocumentation
Description: modified (diff)
Summary: Using multiple formsets within a single templateDocument formset's `prefix` argument.

comment:3 Changed 10 years ago by Brian Rosner

Resolution: fixed
Status: newclosed

(In [8631]) Fixed #8435 -- Documented the prefix option on formsets.

comment:4 Changed 6 years ago by Jacob

milestone: 1.0

Milestone 1.0 deleted

Note: See TracTickets for help on using tickets.
Back to Top