2013-06-03 7 views
5

Wie kann ich die Beschriftungen für die Kontrollkästchen in einem MultipleChoiceField ändern (z. B. Klassen hinzufügen oder die ID ändern)?Django wie man Checkbox-Etiketten für MultipleChoiceField ändert?

In meiner Form habe ich diese MultipleChoiceField

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

und wenn ich die Form in meiner Vorlage verwenden die Kontrollkästchen erhalten mit einzelnen Etiketten um sie so gemacht.

Wie bearbeite ich die Beschriftung, damit ich eine Klasse hinzufügen und andere Attribute der Beschriftung ändern kann?

+0

Sie können Attribute um label [for =] - Tag herum ausrichten. Würde das helfen? – karthikr

+0

ja aber wo würde ich das hinstellen? – bab

+1

in Ihrem Stylesheet. – karthikr

Antwort

4

Sie können Widget.attrs verwenden speziell:

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

Diese gelten würde my-class an das Radio auszuwählen. Wenn Sie die Klasse label noch als gerendert hinzufügen müssen, müssen Sie customize forms.RadioSelect.

+0

Das ändert nur die Klasse für die Checkboxen (was hilfreich ist, danke), aber wie kann ich die Klasse der Labels für die Checkboxen ändern? – bab

+0

@student antwort aktualisiert. – yuwang

+1

Ich glaube, dass es einfacher ist, ein Stylesheet als ein benutzerdefiniertes Widget zu ändern. – yuwang

0

Danke, @yuwang, begeistert zu sehen, dass dies auch für ModelMultipleChoiceField funktioniert (das Ihnen erlaubt, mehrere Checkboxen anzuzeigen), wie Sie unten sehen können. Es gibt sehr wenig Dokumentation zu ModelMultipleChoiceFields, also wollte ich teilen.

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 
Verwandte Themen