The simplest way of displaying a "details" table about any model, is to show a ModelFrom with all fields readonly or (selects) disabled.
Also, the labels are preferably translatable, not just capitalized names of the column tables in your models. So the constructor translates the field labels as well.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | from django import forms
class ReadOnlyForm(forms.ModelForm):
"""Base class for making a form readonly."""
def __init__(self, *args, **kwargs):
from django.utils.translation import ugettext as _
from django.forms.widgets import Select
super(ReadOnlyForm, self).__init__(*args, **kwargs)
for f in self.fields:
self.fields[f].label = _(self.fields[f].label)
if isinstance(self.fields[f].widget, Select):
self.fields[f].widget.attrs['disabled'] = 'disabled'
else:
self.fields[f].widget.attrs['readonly'] = 'readonly'
|
More like this
- csrf test by zukosdead 1 month, 2 weeks ago
- find even number by Rajeev529 9 months, 3 weeks ago
- Form field with fixed value by roam 10 months, 2 weeks ago
- New Snippet! by Antoliny0919 10 months, 3 weeks ago
- Add Toggle Switch Widget to Django Forms by OgliariNatan 1 year, 1 month ago
Comments
Thanks, this is very useful. However, the readonly attribute does not work for inputs with type file, so I think that for files, there should be a new Widget, which displays the file.
#
Please login first before commenting.