Поле формы Django для выбора нескольких вариантов из длинного списка
В моей модели пользователя есть поле ManyToMany к таблице languages, которая хранит языки, на которых говорит пользователь:
spokenLanguages = models.ManyToManyField(Languages, through='LanguageKnowledge', blank=True)
Теперь я хочу создать форму, чтобы пользователь мог выбрать несколько языков из этих вариантов.
При использовании ModelForm полем формы по умолчанию для поля модели ManyToMany является поле MultipleChoiceField, которое имеет SelectMultiple в качестве виджета по умолчанию.
Однако при работе с большим количеством вариантов выбора это поле формы не является полезным, так как приходится просматривать длинный список, чтобы найти нужный вариант. Кроме того, выбор нескольких вариантов возможен только с помощью щелчка по записям. В целом это создает ужасный UX; вот как это выглядит:
Вместо этого я хотел бы иметь что-то вроде CharField, которое открывает выпадающее меню вариантов после фокусировки. Эти варианты должны быть уточнены в зависимости от того, что набирает пользователь (например, если он набирает "Be", выпадающее меню должно показывать только белорусский и бенгальский языки).
.
Кроме того, как только пользователь выбирает один из вариантов, он должен быть добавлен в список выбранных языков, которые видны пользователю, из которого выбор также можно удалить.
В целом решение может выглядеть примерно так же, как выбор тегов, используемый на сайтах Stackexchange при написании вопроса:
Кто-нибудь знает пакет, который может достичь чего-то подобного (я не смог ничего найти)?
Иначе, как лучше всего создать такое поле формы? От какого поля мне следует отталкиваться? Какой виджет(ы) я могу использовать? Нужно ли мне беспокоиться об интеграции с БД?
Есть ли смысл делать все это в бэкенде или есть более простое решение во фронтенде?