Estoy iterando a través de los campos de un formulario y para ciertos campos quiero un diseño ligeramente diferente, que requiera un código HTML alterado.Obtiene el tipo de widget de formulario de Django desde la plantilla
Para hacer esto con precisión, solo necesito saber el tipo de widget. Su nombre de clase o algo similar. En Python estándar, ¡esto es fácil! field.field.widget.__class__.__name__
Desafortunadamente, no tiene permitido el acceso a las variables de subrayado en las plantillas. ¡Genial!
Usted puede field.field.widget.input_type
prueba, pero esto sólo funciona para texto/contraseña <input ../>
tipos. Necesito más resolución para eso.
Para mí, por difícil que parezca, tiene más sentido hacer esto a nivel de plantilla. He subcontratado el bit de código que maneja HTML para los campos en una plantilla separada que se incluye en el bucle de campo. Esto significa que es consistente en ModelForm
sy en el estándar Form
s (algo que no sería cierto si escribiera una clase de formulario intermediario).
Si puede ver un enfoque universal que no me obligue a editar 20 formularios diferentes, ¡hágamelo saber también!
pertinente o función de solicitud: https://code.djangoproject.com/ticket/13009 – Flimm