Opened 7 years ago

Closed 7 years ago

Last modified 4 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 7 years ago by brosner

  • milestone changed from 1.0 maybe to 1.0
  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset
  • Triage Stage changed from Unreviewed to Accepted

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 7 years ago by jacob

  • Component changed from Forms to Documentation
  • Description modified (diff)
  • Summary changed from Using multiple formsets within a single template to Document formset's `prefix` argument.

comment:3 Changed 7 years ago by brosner

  • Resolution set to fixed
  • Status changed from new to closed

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

comment:4 Changed 4 years ago by jacob

  • milestone 1.0 deleted

Milestone 1.0 deleted

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