2013-06-03 65 views
5

如何修改MultipleChoiceField中複選框的標籤(即添加類或更改id)?Django如何修改MultipleChoiceField的複選框標籤?

在我的表單我有這個MultipleChoiceField

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

,當我用表格模板中的複選框獲得與周圍各個標籤這樣的渲染。

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

如何編輯標籤以便我可以添加類並更改標籤的其他屬性?

+0

您可以定位標籤[for =]標籤周圍的屬性。這會有幫助嗎? – karthikr

+0

是的,但我會在那裏放?樣式表中的 – bab

+1

。 – karthikr

回答

4

您可以使用Widget.attrs, 具體爲:

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

這將適用my-class收音機選擇。 如果您仍然需要向渲染的label添加類,則需要使用customize forms.RadioSelect

+0

這隻會改變複選框的類(這是有益的順便說一句,謝謝),但我怎麼能改變複選框的標籤類? – bab

+0

@student答案已更新。 – yuwang

+1

我相信更改樣式表比自定義小部件更直接。 – yuwang

0

感謝@yuwang,看到這也適用於ModelMultipleChoiceField(它允許您顯示多個複選框),如下所示。 ModelMultipleChoiceFields上的文檔很少,所以我想分享一下。

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 
相關問題