Django admin中Select2 4.0.5常见错误

Select2 4.0.5 common errors in Django admin

(免责声明:这是一个自我回答的问题)

我想在 Django 管理面板中(特别是在 change_list.html 模板中)为我的表单字段设置一些 Select2。所以我将必要的脚本添加到页面(不是完整版),但是当它加载时,我得到这个错误:

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) 或 docs 都没有问题。

我该如何解决?

修复它涉及两个步骤:

设置一个名为 $

的变量

这是您看到最后一行 (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>