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