django 自动完成灯未捕获的类型错误:$ 不是函数

问题描述

我正在使用 django-autocomplete-light==3.8.1 和 Django==3.0.6。 我在旧版本的 django 中使用过它,它可以工作,但是在新版本中我收到了这个 javascript 错误 $ is not a function

这是我的设置:

INSTALLED_APPS = [
'django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','dal','dal_select2','myapp','django.contrib.admin','django_extensions',]

和我的models.py

from django.db import models

class IP(models.Model):
    ip_address = models.CharField(max_length=15,db_index=True,unique=True)
    def __str__(self):
        return self.ip_address


class Account(models.Model):
    uid = models.PositiveIntegerField(db_index=True,unique=True)
    name = models.CharField(max_length=15,unique=True)
    ip = models.ForeignKey(IP,null=True,blank=True,on_delete=models.CASCADE)
    def __str__(self):
        return self.name

和我的管理员

from django.contrib import admin
from dal import autocomplete
from .models import *

@admin.register(Account)
class AccountAdmin(admin.ModelAdmin):
    list_display = ('name','ip')
    form = AccountForm


@admin.register(IP)
class IPAdmin(admin.ModelAdmin):
    list_display = ('ip_address',)

class AccountForm(autocomplete.FutureModelForm):
    class Meta:
        model = Account
        fields = ('__all__')
        widgets = {
            'ip': autocomplete.ModelSelect2(url='ip-autocomplete'),}

奇怪的是没有找到jquery。 这是我在管理 html 页面中看到的:

<script type="text/javascript" src="/admin/jsi18n/"></script>
<link href="/static/admin/css/vendor/select2/select2.css" type="text/css" media="screen" rel="stylesheet">
<link href="/static/admin/css/autocomplete.css" type="text/css" media="screen" rel="stylesheet">
<link href="/static/autocomplete_light/select2.css" type="text/css" media="screen" rel="stylesheet">
<script type="text/javascript" src="/static/admin/js/vendor/jquery/jquery.js"></script>
<script type="text/javascript" src="/static/admin/js/vendor/select2/select2.full.js"></script>
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/autocomplete_light.js"></script>
<script type="text/javascript" src="/static/admin/js/core.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/select2.js"></script>
<script type="text/javascript" src="/static/admin/js/admin/RelatedobjectLookups.js"></script>
<script type="text/javascript" src="/static/autocomplete_light/i18n/en.js"></script>
<script type="text/javascript" src="/static/admin/js/actions.js"></script>
<script type="text/javascript" src="/static/admin/js/urlify.js"></script>
<script type="text/javascript" src="/static/admin/js/prepopulate.js"></script>

有什么想法可以让 django-autocomplete-light 在管理页面内工作吗?

解决方法

这很奇怪。尝试了很多事情,包括删除所有静态文件并再次运行 collectstatic 后,我意识到如果我清除浏览器缓存,问题就会消失。