Select2 4.0.5 распространенные ошибки в админке Django - PullRequest
0 голосов
/ 05 марта 2019

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

Я хотел настроить 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) или в документах ни.

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

1 Ответ

0 голосов
/ 05 марта 2019

Исправление выполняется в два этапа:

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

Это первое, о чем вы думаете, когда видите последнюю строку (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>
...