mirror of
https://github.com/django/django.git
synced 2025-10-25 14:46:09 +00:00
Fixed #25078 -- Added support for disabled form fields
Thanks Keryn Knight and Tim Graham for the reviews.
This commit is contained in:
@@ -70,7 +70,7 @@ class Field(six.with_metaclass(RenameFieldMethods, object)):
|
||||
|
||||
def __init__(self, required=True, widget=None, label=None, initial=None,
|
||||
help_text='', error_messages=None, show_hidden_initial=False,
|
||||
validators=[], localize=False, label_suffix=None):
|
||||
validators=[], localize=False, disabled=False, label_suffix=None):
|
||||
# required -- Boolean that specifies whether the field is required.
|
||||
# True by default.
|
||||
# widget -- A Widget class, or instance of a Widget class, that should
|
||||
@@ -90,11 +90,14 @@ class Field(six.with_metaclass(RenameFieldMethods, object)):
|
||||
# hidden widget with initial value after widget.
|
||||
# validators -- List of additional validators to use
|
||||
# localize -- Boolean that specifies if the field should be localized.
|
||||
# disabled -- Boolean that specifies whether the field is disabled, that
|
||||
# is its widget is shown in the form but not editable.
|
||||
# label_suffix -- Suffix to be added to the label. Overrides
|
||||
# form's label_suffix.
|
||||
self.required, self.label, self.initial = required, label, initial
|
||||
self.show_hidden_initial = show_hidden_initial
|
||||
self.help_text = help_text
|
||||
self.disabled = disabled
|
||||
self.label_suffix = label_suffix
|
||||
widget = widget or self.widget
|
||||
if isinstance(widget, type):
|
||||
|
||||
@@ -386,7 +386,10 @@ class BaseForm(object):
|
||||
# value_from_datadict() gets the data from the data dictionaries.
|
||||
# Each widget type knows how to retrieve its own data, because some
|
||||
# widgets split data over several HTML fields.
|
||||
value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name))
|
||||
if field.disabled:
|
||||
value = self.initial.get(name, field.initial)
|
||||
else:
|
||||
value = field.widget.value_from_datadict(self.data, self.files, self.add_prefix(name))
|
||||
try:
|
||||
if isinstance(field, FileField):
|
||||
initial = self.initial.get(name, field.initial)
|
||||
@@ -567,6 +570,8 @@ class BoundField(object):
|
||||
widget.is_localized = True
|
||||
|
||||
attrs = attrs or {}
|
||||
if self.field.disabled:
|
||||
attrs['disabled'] = True
|
||||
auto_id = self.auto_id
|
||||
if auto_id and 'id' not in attrs and 'id' not in widget.attrs:
|
||||
if not only_initial:
|
||||
|
||||
Reference in New Issue
Block a user