2013-06-03 10 views
5

Come modificare (ad esempio aggiungere classi o modificare l'ID) le etichette per le caselle di controllo in un MultipleChoiceField?Django come modificare le etichette delle checkbox per MultipleChoiceField?

Nella mia forma ho questo MultipleChoiceField

questions = forms.MultipleChoiceField(
     required=False, 
     label='', 
     widget=forms.CheckboxSelectMultiple, 
     choices=CHOICES, 
    ) 

e quando uso il modulo nel mio modello le caselle vengo resi con singole etichette intorno a loro come questo.

<label for="id_questions_0"> 
    <input type="checkbox" name="questions" value="0"> 
    "the question" 
</label> 

Come si modifica l'etichetta in modo che sia possibile aggiungere una classe e modificare altri attributi dell'etichetta?

+0

è possibile selezionare gli attributi attorno all'etichetta [per =] tag. Questo sarebbe d'aiuto? – karthikr

+0

sì ma dove lo metterei? – bab

+1

nel foglio di stile. – karthikr

risposta

4

È possibile utilizzare Widget.attrs, particolare:

questions = forms.MultipleChoiceField(
    required=False, 
    label='', 
    widget=forms.CheckboxSelectMultiple(attrs={'class': 'my-class'}), 
    choices=CHOICES, 
) 

Questo si applicherebbe my-class la radio selezionare. Se è ancora necessario aggiungere classe allo label come renderizzato, è necessario customize forms.RadioSelect.

+0

Questo cambia solo la classe per le caselle di controllo (che è utile btw, grazie) ma come posso cambiare la classe delle etichette per le caselle di controllo? – bab

+0

@student answer updated. – yuwang

+1

Credo sia più semplice cambiare foglio di stile di un widget personalizzato. – yuwang

0

Grazie, @yuwang, entusiasta di vedere che questo funziona anche per ModelMultipleChoiceField (che consente di visualizzare più caselle di controllo), come potete vedere di seguito. C'è poca documentazione su ModelMultipleChoiceFields, quindi ho voluto condividere.

class ProposedFlagForm(ModelForm): 
    id = CharField(widget=HiddenInput()) 
    crs_sched_proposed_course = CharField(widget=HiddenInput()) 
    enrollment_flag = ModelMultipleChoiceField(required=False, 
               label='', 
               queryset=EnrollmentFlag.objects.all()\ 
                       .exclude(display='')\ 
                       .order_by('display'), 
               widget=CheckboxSelectMultiple) 
    class Meta: 
     model = CrsSchedProposedFlag 
     exclude = ('_updated','_updatedby') 
    #end Meta class 
#end ProposedFlagForm 
Problemi correlati