По умолчанию ManyToManyField
в Django Model
будет представлен ModelMultipleChoiceField
в ModelForm
, который сам использует виджет SelectMultiple
. Этот виджет использует элемент браузера <select multiple="multiple">
по умолчанию, что приводит к «раздражающему» элементу множественного выбора.
Таким образом, чтобы заменить его, вы должны переопределить ModelMultipleChoiceField
в вашей форме, чтобы передать ему свой собственный виджет (который будет иметь подкласс SelectMultiple
и переопределить используемый шаблон):
my_field = forms.ModelMultipleChoiceField(queryset=Y.objects.all(), widget=MySelectMultiple)
Тем не менее, многие люди уже сделали подобные вещи, так что, вероятно, проще использовать пакет с приятным виджетом с множественным выбором на ваш вкус.
Очень популярный модуль jquery на внешней стороне - select2 . Если вы хотите использовать его, есть несколько пакетов django, которые уже поддерживают его, популярными являются django-autocomplete-light и django-select2