Opened 7 weeks ago

Closed 7 weeks ago

Last modified 7 weeks ago

#28672 closed Bug (invalid)

CheckboxSelectMultiple does not correctly bind to the form attribute passed in when rendered outside its containing form

Reported by: Dylan Young Owned by: nobody
Component: Forms Version: 1.8
Severity: Normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Dylan Young)

This means that POSTing the form does not submit the accompanying selected data.

This seems to be an issue with attrs={'form': 'theform'} not being passed through to the underlying checkbox inputs.

SelectMultiple behaves as expected (submitting with the form).

Minimal (inefficient) Example (must be included on a page with a form named 'theform' to see the problematic POST):

class UserSelectForm(Form):
    selected_users = MultipleChoiceField(
                    choices=[('ex', 'Example'), ('ex2', 'Example2')],
                    initial='ex',
                    widget=CheckboxSelectMultiple(attrs={'form': 'theform'}),
                    required=True)

Not sure if this is fixed in Django>1.8 as I have found no other reference to the bug.

Change History (6)

comment:1 Changed 7 weeks ago by Dylan Young

Description: modified (diff)

comment:2 Changed 7 weeks ago by Tim Graham

Please try to confirm bugs on Django master (or at least on the latest released version) instead of reporting bugs for Django 1.8. Django 1.8 only receives fixes for security and data loss issues at this point.

comment:3 Changed 7 weeks ago by Tim Graham

Resolution: worksforme
Status: newclosed

On both Django master and 1.8.x, I see form="theform" in the rendered HTML of both checkbox inputs. Please provide more details (a sample project would be nice) if you can reproduce your problem with Django master (or at least 1.11.x or 2.0 alpha).

comment:4 Changed 7 weeks ago by Dylan Young

Hmmm... I'll dig deeper. Maybe this is an issue with crispy-forms that needs to be submitted.

As for your other note, this is in fact a data loss bug: every bit of data in that CheckboxSelectMultiple is lost on submit, barring an additional layer that saves dirty data in the form client-side for recovery.

comment:5 Changed 7 weeks ago by Dylan Young

Confirmed that it's an issue with crispy-forms==1.5.2 and not Django. Thanks!

comment:6 Changed 7 weeks ago by Tim Graham

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