Django如何修改MultipleChoiceField的复选框标签?

时间:2013-06-03 01:36:00

标签: python django django-forms

如何修改(即添加类或更改ID)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>

如何编辑标签,以便我可以为其添加一个类并更改标签的其他属性?

2 个答案:

答案 0 :(得分:5)

您可以使用Widget.attrs, 具体是:

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

这会将my-class应用于电台选择。 如果您仍然需要向呈现的label添加课程,则需要customize forms.RadioSelect

答案 1 :(得分: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