132👍
✅
If you want to override the widget for a formfield in general, the best way is to set the widgets
attribute of the ModelForm Meta
class:
To specify a custom widget for a field, use the widgets
attribute of the inner Meta
class. This should be a dictionary mapping field names to widget classes or instances.
For example, if you want the CharField
for the name
attribute of Author
to be represented by a <textarea>
instead of its default <input type="text">
, you can override the field’s widget:
from django.forms import ModelForm, Textarea
from myapp.models import Author
class AuthorForm(ModelForm):
class Meta:
model = Author
fields = ('name', 'title', 'birth_date')
widgets = {
'name': Textarea(attrs={'cols': 80, 'rows': 20}),
}
The widgets
dictionary accepts either widget instances (e.g., Textarea(...)
) or classes (e.g., Textarea
).
https://docs.djangoproject.com/en/3.2/topics/forms/modelforms/#overriding-the-default-fields
👤qris
Source:stackexchange.com