Я повторяю поля формы и для определенных полей хочу немного другой макет, требующий изменения HTML.
Чтобы сделать это точно, мне просто нужно знать тип виджета. Его название класса или что-то подобное. В стандартном питоне это легко! field.field.widget.__class__.__name__
К сожалению, вам не разрешен доступ к символам подчеркивания в шаблонах. Отлично!
Вы можете протестировать field.field.widget.input_type
, но это работает только для типов text/password <input ../>
. Мне нужно больше разрешения.
Мне, как бы сложно это ни казалось, имеет смысл сделать это на уровне шаблона. Я передал часть кода, обрабатывающего HTML для полей, в отдельный шаблон, который включается в цикл цикла. Это означает, что он согласован между ModelForm
и стандартным Form
(что-то, что не было бы правдой, если бы я написал промежуточный класс формы).
Если вы видите универсальный подход, который не требует от меня редактирования 20-тичных форм, дайте мне знать!