如何正确呈现FilteredSelectMultiple

时间:2014-07-04 10:29:26

标签: javascript python django django-forms django-templates

我正在使用FilteredSelectMultiple小部件,但它看起来不像管理员中的小部件。

Javascript控制台节目

Uncaught TypeError: undefined is not a function        SelectFilter2.js:100

我的表单(导入的小部件: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', ) 

模板

{{ group_perm_form.media }}
<form>
  {{ group_perm_form.permissions }}
</form>

(我也试过了{{group_perm_form}},但它没有用,当我用脆弱的表格渲染表格时我很惊讶我可以过滤选择输入,但它仍然被打破了)

我的javascript文件的顺序如下:

jquery
django.js
form.media

这是btw的结果 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" />

1 个答案:

答案 0 :(得分:3)

admin JS小部件都依赖于JSI18N脚本。将其添加到模板标题中:

<script type="text/javascript" src="{% url 'admin:jsi18n' %}"></script>

编辑:看起来你还需要来自static / admin / js的jquery.init.js,因为jQuery被命名空间以避免冲突并且不会自动传递给SelectFilter2脚本