2012-04-26 15 views
5
class permForm(forms.Form): 
    def __init__(self, data=None, **kwargs): 
     super(permForm, self).__init__(data, **kwargs) 

     for item in list(AdminMenu.objects.filter(parent_id=0)): 
      self.fields['menu_%d' % item.id] = forms.BooleanField(label=item.title) 
      for childitem in list(AdminMenu.objects.filter(parent_id=item.id)): 
       arr=[] 
       arr.append(str(item.id)) 
       arr.append(str(childitem.id)) 
       self.fields['menu_%s' % '_'.join(arr)] = forms.BooleanField(label=childitem.title) 

Ciò restituiràCome personalizzare forma Django etichetta

categoria: casella di controllo

add categoria: casella di controllo

Lista Categoria: casella di controllo

alimentare: casella di controllo

Add Articoli alimentari: checkbox

Lista Fooditem: casella di controllo

Tabelle: Casella di controllo

aggiungere tabelle: casella di controllo

Elenco tabelle: casella di controllo

utenti: casella di controllo

Visualizza utenti: casella di controllo
COME POSSO visualizzalo come segue

categoria: casella categoria

aggiuntivo: casella di controllo

Lista Categoria: casella di controllo

alimentari: casella di controllo

Aggiungere Fooditems: Casella di controllo

Lista Fooditem: casella di controllo

Tabelle: Casella di controllo

aggiungere tabelle: casella di controllo

Elenco tabelle: casella di controllo

Utenti: casella di controllo

Visualizza utenti: casella di controllo

voglio fare Settore superiore ETICHETTA BOLD TO DISTINGUARLA DAL BAMBINO. POSSIBILE? Non voglio UTILIZZARE hard coded FORME

+0

usare i CSS, è molto più semplice e più facile da cambiare. L'etichetta del modulo non cambierà mai se non si modifica il modello del modulo django. – platinummonkey

+0

Non c'è bisogno di urlare. Come suggerito da @platinummonkey, puoi sempre usare i CSS, a meno che la tua unica scelta sia quella di rendere ogni campo singolarmente nel tuo modulo e aggiungere qualunque tag extra desideri in quel modo. Non è possibile * includere l'HTML in un'etichetta in Django. –

+1

In realtà, è possibile. Vedi la mia risposta per esempio codice. – Brandon

risposta

13

Ecco un esempio di come aggiungere un po 'di HTML per formare etichette:

from django.template.defaultfilters import mark_safe 


class MyForm(forms.Form): 
    my_field = forms.CharField(
     max_length=100, 
     label = mark_safe('<strong>My Bold Field Label</strong>') 
    ) 
+0

Molto bello ma un po 'sporco. – Natim

+0

Un approccio più pulito sarebbe probabilmente quello di mettere il testo dell'etichetta in un modello e utilizzare render_to_string, quindi non inquinare il codice Python con HTML. – Brandon

+0

Forse la soluzione sarebbe utilizzare floppyforms per estendere il rendering del modulo etichetta per questo campo. – Natim

Problemi correlati