Opened 4 years ago

Closed 4 years ago

#21743 closed Cleanup/optimization (wontfix)

formset prefix attribute and formset empty form "__prefix__" don't refer to the same thing

Reported by: bjb@… Owned by: nobody
Component: Forms Version: 1.6
Severity: Normal Keywords: formset prefix
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no


The formset prefix attribute and formset emptyform "__prefix__" placeholder don't refer to the same thing

Formsets allow you to change the word "form" in the ids of the elements in the form to some other string, and the way you do that is with the "prefix" kwarg when creating the FormsetFactory. eg, id_form-5_id -> id_note-5_id when prefix = note. That's good.

Formsets have a way to generate an empty form so you can add new forms into your html with simple javascript, you don't have to know what all the fields are in javascript - just clone the empty form (and adjust the ids and fix up the TOTAL_FORMS etc). That's good.

Unfortunately, the placeholder for the form number in the ids of the empty form elements is called __prefix__. That is confusing, because the prefix passed in to the formset is used in the ids in a different spot.

id_note-__prefix__-id, where "note" was passed in as the value for the prefix kwarg.

I think the __prefix__ placeholder should be changed to some other string, like "formnum".

An emptyform with no prefix specified would then look like: id_form-__formnum__-id

Change History (1)

comment:1 Changed 4 years ago by Tim Graham

Resolution: wontfix
Status: newclosed

The inconsistency is too bad, but I don't think we can make the change without breaking backwards compatibility. If I'm missing something, feel free to reopen.

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