7

我有 djangoModelForm模型与 ManyToManyField。我想将此字段的小部件更改为CheckboxSelectMultiple. 我可以在不覆盖表单定义中的字段的情况下执行此操作吗?

我经常使用类似这样的代码:

class MyModel(ModelForm):
    m2m_field = forms.ModelMultipleChoiceField(queryset = SomeModel.objects.all(),
                                               widget = forms.CheckboxSelectMultiple())

还有其他方法可以做到这一点吗?

编辑:我需要这个用于 Django 1.1.1 项目

4

2 回答 2

26

如果您使用的是 Django 1.2+,则可以使用widgets内部 Meta 类中的元组。

class MyModelForm(forms.ModelForm):
    class Meta:
        widgets = {'m2m_field': forms.CheckboxSelectMultiple}

请参阅文档

于 2010-07-02T21:15:01.000 回答
7

另一种方法是在 ModelForm 的init中执行此操作:

class MyModel(ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyModel, self).__init__(*args, **kwargs)
        self.fields['m2m_field'].widget = forms.CheckboxSelectMultiple()

    [...]
于 2010-07-02T21:11:54.133 回答