django-select2 в Django
10 января 2019 г. 2:48
Устарело!
Это актуально для django-select2 <= 7.7.1
Сходу использовать 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()._get_media()
css = ['select2/css/select2.css'] # если нужно какие-то стили переопределить
css.extend(media._css['screen'])
extra = '' if settings.DEBUG else '.min'
js = [f'admin/js/vendor/jquery/jquery{extra}.js', 'admin/js/jquery.init.js', 'my_app/admin_compat.js']
js.extend(media._js)
return forms.Media(js=js, css={'screen': css})
media = property(_get_media)
if (window.django !== undefined) var jQuery = django.jQuery, $ = django.jQuery;
3. Используйте кастомный виджет в своём коде:
from my_app.widgets import Select2Widget class MyForm(forms.Form): my_choice = forms.ChoiceField(widget=Select2Widget)
Теперь должно заработать.
Во втором шаге использовалась версия jQuery, которая входит в состав Django. но вы можете использовать свою версию jQuery. Как это сделать и другие настройки вы можете прочитать на странице Добавить jquery в widget Django.
Представляю вашему вниманию книгу, написанную моим близким другом Максимом Макуриным: Секреты эффективного управления ассортиментом.
Книга предназначается для широкого круга читателей и, по мнению автора, будет полезна специалистам отдела закупок и логистики, категорийным и финансовым менеджерам, менеджерам по продажам, аналитикам, руководителям и директорам, в компетенции которых принятие решений по управлению ассортиментом.
Комментарии: 0