kvi*_*tor 5 javascript python django django-templates django-forms
我正在使用 FilteredSelectMultiple 小部件,但它只是不想看起来像管理员中的那个。
Javascript 控制台显示
Uncaught TypeError: undefined is not a function SelectFilter2.js:100
Run Code Online (Sandbox Code Playgroud)
我的表单(导入的小部件:django.contrib.admin.widgets.FilteredSelectMultiple)
class GroupPermissionForm(forms.ModelForm):
permissions = forms.ModelMultipleChoiceField(
queryset=Permission.objects.all(),
widget=FilteredSelectMultiple("verbose name", is_stacked=False)
)
class Meta:
model = Group
fields = ('permissions', )
Run Code Online (Sandbox Code Playgroud)
模板
{{ group_perm_form.media }}
<form>
{{ group_perm_form.permissions }}
</form>
Run Code Online (Sandbox Code Playgroud)
(我也试过 {{ group_perm_form }} 但它没有用,令我惊讶的是,当我用脆皮渲染表单时,我可以过滤选择输入,但它仍然被打破了)
我的 javascript 文件的顺序如下:
jquery
django.js
form.media
Run Code Online (Sandbox Code Playgroud)
这是结果顺便说一句

编辑:工作模板如下所示
<script type="text/javascript" src="/static/admin/js/jquery.min.js"></script>
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>
{{ group_perm_form.media }}
<form>
{{ group_perm_form.permissions }}
</form>
<link rel="stylesheet" type="text/css" href="/static/admin/css/widgets.css" />
Run Code Online (Sandbox Code Playgroud)
管理 JS 小部件都依赖于 JSI18N 脚本。将其添加到您的模板标题中:
<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>
Run Code Online (Sandbox Code Playgroud)
编辑:看起来您还需要 static/admin/js 中的 jquery.init.js,因为 jQuery 被命名为避免冲突,并且不会自动传递到 SelectFilter2 脚本。