У меня есть django ModelForm
для модели с ManyToManyField. Я хочу изменить виджет для этого поля кCheckboxSelectMultiple
. Я могу сделать это, не переопределяя поле в определении формы?
Я постоянно использую код, подобный этому:
class MyModel(ModelForm):
m2m_field = forms.ModelMultipleChoiceField(queryset = SomeModel.objects.all(),
widget = forms.CheckboxSelectMultiple())
Там другой путь состоит в том, чтобы сделать это?
Править: Мне нужно это для Django 1.1.1 проекта
Другой способ сделать это - сделать это в init ModelForm:
class MyModel(ModelForm):
def __init__(self, *args, **kwargs):
super(MyModel, self).__init__(*args, **kwargs)
self.fields['m2m_field'].widget = forms.CheckboxSelectMultiple()
[...]
Если вы используете Django 1.2+, вы можете использовать кортеж widgets
во внутреннем классе Meta.
class MyModelForm(forms.ModelForm):
class Meta:
widgets = {'m2m_field': forms.CheckboxSelectMultiple}
См. документацию .