Автор умеет ими пользоваться.
Замечание верное. Выкладываю в общий доступ все-таки.
Поясню ход мыслей.
На странице бывает много независимых форм в разных местах.
Не хочу после каждой формы выводить {{form.media}}.
Загрузку всех скриптов всегда выношу в конце тэга «body»,
это действительно, ускоряет время отображения страницы (визуально).
В шаблон я предлагал вставить еще кусок шаблона (через include) с модальным окном,
куда загружается дерево иерархии через AJAX.
Можно было дерево загружать возле виджета,
вставлять этот контейнер скриптом после загрузки страницы.
Основная цель статьи не в том, чтоб предложить идеальное решение типа (скачай и забудь), а максимально простое для изучения внутри
В нашем приложении каждый пользователь может увидеть разное количество опций одного и того же поля
в зависимости от ролей доступа, параметров документа, различных ограничений доступа.
А хранить копию каждого поле-проект-документ-пользователь замусорит систему и нужно думать о инвалидации кэша, к тому же (параметры у документа меняются и будут менятся список наложенных фильтров).
В этом приложении все более прозрачно.
При отрисовке, виджет выдирает наложенные фильтры из QuerySet-а и сохраняет их в параметрах,
которые каждый раз добавляются к AJAX-запросу.
Необходимости хранить QuerySet вообще нет. Все работает тупо и просто.
Можно открыть 10 документов на разных вкладках и получить разный набор опций для каждого.
Это могут сделать 5000 пользователей и ajax-обработчик будет корректно всех обслуживать.
С моим вариантом это будет работать, а с django-select2 нет.
Не выкладывал.
Посчитал решение сильно тривиальным и слишком простым для того, чтобы куда-то его выкладывать.
Сейчас я практически не пишу под django, переключился на flask.
Проект, в который входит этот код целиком, я не могу выложить в открытый доступ, к сожалению.
Да и весь код, достаточный для воссоздания на вашей стороне, есть в статье.
Мне жаль, что потерялся файл в Google Disk (там все было).
Да и статья не претендует на готовое решение, оформленное в виде просто подключаемой библиотеки.
Она была скорее про то, что не так уж это все и сложно.
Попробуйте просмотреть эти куски кода и создать у себя модуль с виджетами, скрипт и обработчик поисковых запросов.
Если будут сложности, пишите в личку.
Все-таки, хотелось бы, чтоб вы немного поняли что это и с какой стороны к этому подходить.
Пользы будет намного больше, чем просто взять в виде либы (черного ящика).
Прямо сейчас мне немного стыдно за качество кода и концепцию вообще, все-таки статья довольно старая.
Сейчас такое же решение есть для Flask, но код я не могу выложить в общий доступ целиком.
Если кому-то интересно, могу похожую статью с общими принципами написать про Wtforms
Это виджеты для стандартных форм Django и предназначены для использования с формами Django.
В блоке «Использование» как раз пример использования одного из виджетов с формой Django.
Django + Select2 = select autocomplete