如何正确呈现 FilteredSelectMultiple

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)

这是结果顺便说一句 http://i.imgur.com/pvdcjW1.png

编辑:工作模板如下所示

<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)

Dan*_*man 3

管理 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 脚本。