DJANGO: Change field size of ModelMultipleChoiceField?

5.1k Views Asked by At

I was wondering how one changes the size of a ModelMultipleChoiceField? I've only seen examples of changing a CharField into a Textarea... Is this possible?

Models.PY

class FilterForm(forms.Form):
    Person = forms.ModelMultipleChoiceField(required=False, queryset=Person.objects.all(), attrs={'cols': 50, 'rows': 10})
3

There are 3 best solutions below

0
On BEST ANSWER

You can change the width and height of the widget by applying CSS to the <select> element that Django creates.

0
On

Override the form's __init__ method and add:

self.fields['Person'].widget.attrs['size']='10'
2
On

Try this:

from django.forms import widgets
class FilterForm(forms.Form):
    Person = forms.ModelMultipleChoiceField(required=False, queryset=Person.objects.all(), widget=widgets.SelectMultiple(attrs={'size': 20}))