django-select2 в Django
10 января 2019 г. 2:48
Сходу использовать django_select2 в админке Django не получается из-за того, что django_select2 требует JQuery. Виджет django_select2 по умолчанию не подключает JQuery. Более подробно об этом вы можете прочитать на странице Добавить jquery в widget Django.
Чтобы быстро подключить jQuery к django_select2, сделайте следующее:
1. Подключите django-select2
Установите django_select2:
pip install django_select2
Добавьте пакет в ISTALLED_APPS
:
INSTALLED_APPS = ( ... 'django_select2', )
Если используете ModelWidgets
, то добавьте и урлы:
url(r'^select2/', include('django_select2.urls')),
2. Создайте свой кастомный виджет на основе Select2Widget
from django_select2.forms import Select2Widget as BaseSelect2Widget class Select2Widget(BaseSelect2Widget): """ Added jquery to widget """ def _get_media(self): media = super(Select2Widget, self)._get_media() extra = '' if settings.DEBUG else '.min' js = ['vendor/jquery/jquery%s.js' % extra, 'jquery.init.js'] js = ['admin/js/%s' % url for url in js] js.append('my_app/admin_compat.js') # insert scripts before Select2Widget scripts for i, url in enumerate(js): media._js.insert(i, url) return media media = property(_get_media)
3. Используйте кастомный виджет в своём коде:
from my_app.widgets import Select2Widget class MyForm(forms.Form): my_choice = forms.ChoiceField(widget=Select2Widget)
Теперь должно заработать.
Во втором шаге использовалась версия jQuery, которая входит в состав Django. но вы можете использовать свою версию jQuery. Как это сделать и другие настройки вы можете прочитать на странице Добавить jquery в widget Django.
Комментариев: 0