Select2 4.0.5 распространенные ошибки в админке Django

(Отказ от ответственности: это вопрос, на который вы сами ответили)

Я хотел настроить Select2 для полей формы, находясь в панели администратора Django (в частности, в шаблоне change_list.html). Итак, я добавил на страницу необходимые скрипты (не полную версию), но когда она загружается, я получаю следующие ошибки:

Select2: An instance of jQuery or a jQuery-compatible library was not found. Make
    sure that you are including jQuery before Select2 on your web page.
TypeError: a is undefined
TypeError: e is undefined
TypeError: $ is not a function

И когда вы ищете одну из этих ошибок (ну, не первую и не последнюю), ответы не по той же теме (обычно это связано с плохой настройкой processResults или проблемами с Bootstrap) или в документы тоже.

Как я могу это исправить?


person RompePC    schedule 05.03.2019    source источник


Ответы (1)


Есть два шага, связанные с его исправлением:

Установка переменной с именем $

Это первое, о чем вы думаете, когда видите последнюю строку (TypeError: $ is not a function), и все скрипты обычно используют ее (кто не использует $ в своих скриптах?). Но когда вы изменяете его, вы все равно получаете эти ошибки:

TypeError: a is undefined
TypeError: e is undefined

Значит, надо идти глубже...

Установка переменной с именем jQuery

Это может быть немного скрыто, так как нам нужно копаться в скрипте select2.js (обычно вы используете уменьшенную версию, поэтому вместо этого отображается только $).

Похоже, иногда используется переменная с именем jQuery, поэтому вам также нужно настроить ее в своем JS.

Как должно выглядеть исправление

Добавьте этот скрипт перед вашими скриптами Select2:

<script type="text/javascript">
    // To prevent errors for Select2 JS
    var $ = django.jQuery;
    var jQuery = django.jQuery;
</script>
person RompePC    schedule 05.03.2019