#28387: Disabled fields should not be considered changed in bound forms
----------------------------------------+------------------------
               Reporter:  Kevin Corbin  |          Owner:  nobody
                   Type:  Bug           |         Status:  new
              Component:  Forms         |        Version:  1.11
               Severity:  Normal        |       Keywords:
           Triage Stage:  Unreviewed    |      Has patch:  0
    Needs documentation:  0             |    Needs tests:  0
Patch needs improvement:  0             |  Easy pickings:  0
                  UI/UX:  0             |
----------------------------------------+------------------------
 This is similar to #27431, but that ticket only modified the has_changed
 method in the base django.forms.fields.Field class.

 Other form field classes included in django.forms.fields and
 django.forms.models override the base class' has_changed method, so aren't
 checking for the disabled attribute when determining whether or not a
 bound form field's data has changed.

 As of Django 1.11.3, the following are affected:
 *django.forms.fields.BooleanField
 *django.forms.fields.MultipleChoiceField
 *django.forms.fields.MultiValueField
 *django.forms.fields.FileField
 *django.forms.models.ModelChoiceField
 *django.forms.models.ModelMultipleChoiceField

 Here is an example form class that exhibits this behavior:
 {{{#!python
 from django.contrib.auth import get_user_model
 class MyTestForm(forms.Form):
     test_disabled = forms.ModelChoiceField(disabled=True,
 queryset=get_user_model().objects.all(),
 initial=get_user_model().objects.first().id)
 }}}

 From the console I show the bug as such:
 {{{#!python
 form = MyTestForm(data={})
 form.is_bound #True
 form.has_changed() #True
 form.changed_data #['test_disabled']
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/28387>
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 post to this group, send email to django-updates@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/050.cea85b274964bcdf37f610a826caeb70%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to