From 8411e4a8fe98ebac4327ee43446a25873703a5e8 Mon Sep 17 00:00:00 2001 From: Richard Oyudo Date: Wed, 7 Mar 2018 22:58:55 +0100 Subject: [PATCH] Fixed #28655 -- Added more examples for customizing widgets in a form. --- docs/ref/forms/widgets.txt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/ref/forms/widgets.txt b/docs/ref/forms/widgets.txt index ee913f0f72..eb858f1278 100644 --- a/docs/ref/forms/widgets.txt +++ b/docs/ref/forms/widgets.txt @@ -157,6 +157,25 @@ this, you use the :attr:`Widget.attrs` argument when creating the widget:: url = forms.URLField() comment = forms.CharField(widget=forms.TextInput(attrs={'size': '40'})) +You can also modify a widget in the form definition:: + + class CommentForm(forms.Form): + name = forms.CharField() + url = forms.URLField() + comment = forms.CharField() + + name.widget.attrs.update({'class': 'special'}) + comment.widget.attrs.update(size='40') + +Or if the field isn't declared directly on the form (such as model form fields), +you can use the :attr:`Form.fields` attribute:: + + class CommentForm(forms.ModelForm): + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields['name'].widget.attrs.update({'class': 'special'}) + self.fields['comment'].widget.attrs.update(size='40') + Django will then include the extra attributes in the rendered output: >>> f = CommentForm(auto_id=False)