Поле формы Django для выбора нескольких вариантов из длинного списка

В моей модели пользователя есть поле ManyToMany к таблице languages, которая хранит языки, на которых говорит пользователь: spokenLanguages = models.ManyToManyField(Languages, through='LanguageKnowledge', blank=True)
Теперь я хочу создать форму, чтобы пользователь мог выбрать несколько языков из этих вариантов.

При использовании ModelForm полем формы по умолчанию для поля модели ManyToMany является поле MultipleChoiceField, которое имеет SelectMultiple в качестве виджета по умолчанию.
Однако при работе с большим количеством вариантов выбора это поле формы не является полезным, так как приходится просматривать длинный список, чтобы найти нужный вариант. Кроме того, выбор нескольких вариантов возможен только с помощью щелчка по записям. В целом это создает ужасный UX; вот как это выглядит:

Clunky MultipleChoiceField

Вместо этого я хотел бы иметь что-то вроде CharField, которое открывает выпадающее меню вариантов после фокусировки. Эти варианты должны быть уточнены в зависимости от того, что набирает пользователь (например, если он набирает "Be", выпадающее меню должно показывать только белорусский и бенгальский языки).
. Кроме того, как только пользователь выбирает один из вариантов, он должен быть добавлен в список выбранных языков, которые видны пользователю, из которого выбор также можно удалить.

В целом решение может выглядеть примерно так же, как выбор тегов, используемый на сайтах Stackexchange при написании вопроса:

SO select tags

Кто-нибудь знает пакет, который может достичь чего-то подобного (я не смог ничего найти)?
Иначе, как лучше всего создать такое поле формы? От какого поля мне следует отталкиваться? Какой виджет(ы) я могу использовать? Нужно ли мне беспокоиться об интеграции с БД?
Есть ли смысл делать все это в бэкенде или есть более простое решение во фронтенде?

Вернуться на верх