Динамическая настройка виджетов формы django

В частности, я хочу добавить класс error, если поле недействительно. Таким образом, это будет выглядеть так:

<input type="text" name="email" class="error" />

Пример удара кажется хакерским, и я не видел других примеров того, как этого добиться.

http://jj.isgeek.net/2010/10/27/add-error-class-to-widgets-with-errors-in-django-forms/

Можно ли глобально переопределить шаблоны виджетов по умолчанию? Я хотел бы иметь такие классы, как required (или html5 required attr), если поле требуется, чтобы его можно было сначала проверить с помощью JavaScript. С появлением новых типов ввода html5 я хотел бы иметь возможность использовать type="number", например, для целочисленных полей.

Я прочитал эти документы, которые не очень помогли. http://docs.djangoproject.com/en/dev/ref/forms/widgets/#customizing-widget-instances

Изменить По-видимому, для форм есть required_css_class и error_css_class. Однако я использую modelForms, и это, похоже, не работает.


person Keyo    schedule 20.01.2011    source источник


Ответы (1)


К сожалению, нет простого способа, кроме хака, который вы уже определили с помощью стандартного django.

Можно ли глобально переопределить шаблоны виджетов по умолчанию?

Разработчики django обсуждают, как это решить.

На данный момент решение, которое должно понравиться вам больше всего, должно заключаться в использовании внешнего пакета от разработчика ядра django Карла: django-form-utils, который позволяет переопределять шаблоны, включать произвольные классы и наборы полей.

И включите следующее в свой forms.py

from form_utils.forms import BetterModelForm as ModelForm
person lprsd    schedule 20.01.2011
comment
form_utils выглядит как хорошая замена, спасибо за совет. - person Keyo; 20.01.2011