#31073: SplitArrayField with BooleanField always has widgets checked after first
True value
-------------------------------------+-------------------------------------
     Reporter:  Peter Andersen       |                    Owner:  (none)
         Type:  Bug                  |                   Status:  new
    Component:  contrib.postgres     |                  Version:  2.2
     Severity:  Normal               |               Resolution:
     Keywords:  SplitArrayField      |             Triage Stage:
  BooleanField ChecboxInput          |  Unreviewed
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------
Description changed by Peter Andersen:

Old description:

> When providing a SplitArrayField BooleanField with preexisting data, the
> final_attrs dict is updated to include `'checked': True` after the for
> loop has reached the first `True` value in the initial data array. Once
> this occurs every widget initialized after that defaults to checked even
> though the backing data may be False. This is caused by the CheckboxInput
> widget's `get_context()`  modifying the attrs dict passed into it. This
> is the only widget that modifies the attrs dict passed into its
> get_context().
>
> CheckboxInput setting attrs['checked'] to True:
> https://github.com/django/django/blob/master/django/forms/widgets.py#L527

New description:

 When providing a SplitArrayField BooleanField with preexisting data, the
 final_attrs dict is updated to include `'checked': True` after the for
 loop has reached the first `True` value in the initial data array. Once
 this occurs every widget initialized after that defaults to checked even
 though the backing data may be False. This is caused by the CheckboxInput
 widget's `get_context()`  modifying the attrs dict passed into it. This is
 the only widget that modifies the attrs dict passed into its
 get_context().

 CheckboxInput setting `attrs['checked']` to True:
 https://github.com/django/django/blob/master/django/forms/widgets.py#L527

--

-- 
Ticket URL: <https://code.djangoproject.com/ticket/31073#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/070.f560c709517ae8cb2fdccadc8d4810de%40djangoproject.com.

Reply via email to