Если вы хотите добавить класс в поле формы в шаблоне (не в view.py или form.py), например, в случаях, когда вы хотите изменить сторонние приложения без переопределения их представления, а затем шаблон фильтра, как описано в Charlesthk ответ , очень удобно. Но в этом ответе фильтр шаблона переопределяет любые существующие классы, которые может иметь поле.
Я пытался добавить это как правку, но было предложено написать новый ответ.
Итак, вот тег шаблона, который учитывает существующие классы поля:
from django import template
register = template.Library()
@register.filter(name='addclass')
def addclass(field, given_class):
existing_classes = field.field.widget.attrs.get('class', None)
if existing_classes:
if existing_classes.find(given_class) == -1:
# if the given class doesn't exist in the existing classes
classes = existing_classes + ' ' + given_class
else:
classes = existing_classes
else:
classes = given_class
return field.as_widget(attrs={"class": classes})