7

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

如何编辑标签以便向其添加类并更改标签的其他属性?

4

2 回答 2

5

您可以使用Widget.attrs,特别是:

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

这将适用my-class于无线电选择。如果您仍然需要将类添加到label呈现的内容,则需要自定义forms.RadioSelect.

于 2013-06-03T06:01:10.183 回答
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
于 2014-06-05T13:42:06.523 回答