Search code examples
djangodjango-formsmany-to-manydjango-widget

How to change ManyToManyField widget to CheckboxSelectMultiple without overriding field definition in a ModelForm


I have django ModelForm for model with ManyToManyField. I want to change widget for this field toCheckboxSelectMultiple. Can I do this without overriding a field in a form definition?

I constantly use code similar to this:

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

Is there other way to do this?

EDIT: I need this for Django 1.1.1 project


Solution

  • Another way to do this is doing it in the init of the ModelForm:

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