This Field, Widget and the three lines of code in the form's clean method allow an easy (and hopefully general) way to add simple, unchangable text to a form.
Example use:
class OnlyTextForm(forms.ModelForm):
    points = StaticField(label=_('Points'))
    reviewer = StaticField(label=_('Reviewer'))
    def clean(self):
        for name, field in self.fields.items():
            if isinstance(field, StaticField):
                self.cleaned_data.update({name: self.initial[name]})
        return self.cleaned_data
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23  | class NoInput(forms.Widget):
    def render(self, name, value, attrs=None):
        return mark_safe(value)
class StaticField(forms.Field):
    
    widget = NoInput
    
    def clean(self, value):
        return 
# Example usage
#class OnlyTextForm(forms.ModelForm):
#    
#    points = StaticField(label=_('Points'))
#    reviewer = StaticField(label=_('Reviewer'))
#    
#    def clean(self):
#        for name, field in self.fields.items():
#            if isinstance(field, StaticField):
#                self.cleaned_data.update({name: self.initial[name]})
#
#        return self.cleaned_data
 | 
More like this
- Add Toggle Switch Widget to Django Forms by OgliariNatan 1 month, 4 weeks ago
 - get_object_or_none by azwdevops 5 months, 2 weeks ago
 - Mask sensitive data from logger by agusmakmun 7 months, 2 weeks ago
 - Template tag - list punctuation for a list of items by shapiromatron 1 year, 9 months ago
 - JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 1 year, 9 months ago
 
Comments
Please login first before commenting.