To make a field readonly (or disabled) so that it cannot be edited in a Python Django form, we can set the readonly
attribute of a field to True
.
For instance, we write
class ItemForm(ModelForm):
def __init__(self, *args, **kwargs):
super(ItemForm, self).__init__(*args, **kwargs)
instance = getattr(self, 'instance', None)
if instance and instance.pk:
self.fields['sku'].widget.attrs['readonly'] = True
def clean_sku(self):
instance = getattr(self, 'instance', None)
if instance and instance.pk:
return instance.sku
else:
return self.cleaned_data['sku']
to create the ItemForm
with the
self.fields['sku'].widget.attrs['readonly']
dictionary value set to True
to make the sku
field readonly.