Je parcours les champs d'un formulaire et pour certains d'entre eux, je souhaite une mise en page légèrement différente, ce qui nécessite une modification du code HTML.
Pour faire cela avec précision, j'ai juste besoin de connaître le type de widget. Son nom de classe ou quelque chose de similaire. En python standard, c'est facile ! field.field.widget.__class__.__name__
Malheureusement, vous n'êtes pas autorisé à accéder aux variables soulignées dans les modèles. Super !
Vous peut test field.field.widget.input_type
mais cela ne fonctionne que pour le texte/mot de passe <input ../>
types. J'ai besoin de plus de résolution que ça.
Pour moi, aussi difficile que cela puisse paraître, il est plus logique de le faire au niveau des modèles. J'ai externalisé la partie du code qui gère le HTML pour les champs vers un modèle séparé qui est inclus dans la boucle de champ. Cela signifie qu'il est cohérent à travers ModelForm
et standard Form
(ce qui ne serait pas vrai si j'écrivais une classe Form intermédiaire).
Si vous voyez une approche universelle qui ne m'oblige pas à modifier une vingtaine de formulaires, faites-le moi savoir !
0 votes
Rapport de bogue pertinent ou demande de fonctionnalité : code.djangoproject.com/ticket/13009