Django - 替换列表中字段的表单小部件

时间:2015-03-25 11:03:47

标签: python django django-forms django-views

我试图将小部件更改为名称中包含字符串的表单中的字段,我尝试执行以下操作:

class CI_tableForm(ModelForm):
        class Meta:
            model = CI_table
            fields = report_query_values
            for field in report_query_values:
                if "_id" in field:
                    field = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple)

不确定是否可能。 目前它没有错误,但也没有改变小部件。

谢谢, 艾萨克

1 个答案:

答案 0 :(得分:1)

您应该在__init__构造函数中执行此操作:

class CI_tableForm(ModelForm):

    class Meta:
        model = CI_table
        fields = report_query_values

    def __init__(self, *args, **kwargs):
        super(CI_tableForm, self).__init__(*args, **kwargs)
        for field in report_query_values:
            if "_id" in field:
                choices = self.fields[field].widget.choices
                self.fields[field].widget = forms.CheckboxSelectMultiple(
                                                             choices=choices)