对于带有ManyToManyField的模型,我有django ModelForm
。我想将此字段的窗口小部件更改为CheckboxSelectMultiple
。我是否可以在不覆盖表单定义中的字段的情况下执行此操作?
我经常使用类似的代码:
class MyModel(ModelForm):
m2m_field = forms.ModelMultipleChoiceField(queryset = SomeModel.objects.all(),
widget = forms.CheckboxSelectMultiple())
还有其他办法吗?
编辑:我需要这个用于Django 1.1.1项目
答案 0 :(得分:26)
如果您使用的是Django 1.2+,则可以在内部Meta类中使用widgets
元组。
class MyModelForm(forms.ModelForm):
class Meta:
widgets = {'m2m_field': forms.CheckboxSelectMultiple}
答案 1 :(得分:7)
另一种方法是在ModelForm的 init 中执行此操作:
class MyModel(ModelForm):
def __init__(self, *args, **kwargs):
super(MyModel, self).__init__(*args, **kwargs)
self.fields['m2m_field'].widget = forms.CheckboxSelectMultiple()
[...]