Opened 16 years ago
Last modified 13 years ago
#8435 closed
Document formset's `prefix` argument. — at Version 2
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: | no | UI/UX: | no |
Description (last modified by )
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 (2)
comment:1 by , 16 years ago
milestone: | 1.0 maybe → 1.0 |
---|---|
Triage Stage: | Unreviewed → Accepted |
comment:2 by , 16 years ago
Component: | Forms → Documentation |
---|---|
Description: | modified (diff) |
Summary: | Using multiple formsets within a single template → Document formset's `prefix` argument. |
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.