Sto iterando attraverso i campi di un modulo e per determinati campi voglio un layout leggermente diverso, che richiede HTML alterato.Ottieni il tipo di widget di forma Django dal modello
Per fare ciò con precisione, ho solo bisogno di conoscere il tipo di widget. Il nome della classe o qualcosa di simile. In Python standard, questo è facile! field.field.widget.__class__.__name__
Purtroppo, non è consentito l'accesso alle variabili di sottolineatura nei modelli. Ottimo!
È possibile prova field.field.widget.input_type
ma questo funziona solo per il testo/password <input ../>
tipi. Ho bisogno di più risoluzione per quello.
Per me, per quanto difficile possa sembrare, ha più senso farlo a livello di modello. Ho esternalizzato il bit di codice che gestisce l'HTML per i campi in un modello separato che viene incluso nel ciclo di campo. Ciò significa che è coerente tra ModelForm
s e lo standard Form
s (qualcosa che non sarebbe vero se avessi scritto una classe Form intermediario).
Se riesci a vedere un approccio universale che non mi richiede di modificare i moduli di 20 cifre, fammelo sapere anche io!
Rilevante o caratteristica richiesta: https://code.djangoproject.com/ticket/13009 – Flimm