代码之家  ›  专栏  ›  技术社区  ›  dzida

如何将ManyToManyField小部件更改为CheckboxSelectMultiple而不重写ModelForm中的字段定义

  •  7
  • dzida  · 技术社区  · 14 年前

    我有django ModelForm 对于具有多个字段的模型。我想将此字段的小部件更改为 CheckboxSelectMultiple

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

    还有别的办法吗?

    编辑:我需要这个django1.1.1项目

    2 回复  |  直到 14 年前
        1
  •  7
  •   patrick genkilabs    14 年前

    另一种方法是在 初始化 模型形式:

    class MyModel(ModelForm):
        def __init__(self, *args, **kwargs):
            super(MyModel, self).__init__(*args, **kwargs)
            self.fields['m2m_field'].widget = forms.CheckboxSelectMultiple()
    
        [...]
    
        2
  •  26
  •   Daniel Roseman    14 年前

    widgets 内部元类中的元组。

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

    看到了吗 the documentation .