2014-07-04 117 views
3

我正在使用FilteredSelectMultiple小部件,但它只是不想看起来像管理员。如何正确渲染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}},但它不起作用,这让我很惊讶,当我提交表单wi日香脆我可以过滤选择输入,但是它仍然打散)

我的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" /> 

回答

2

的ADMI n JS小部件都依赖于JSI18N脚本。此添加到您的模板标题:

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

编辑:看起来你还需要从静态/管理/ JS的jquery.init.js,因为jQuery是被命名空间,避免冲突和不通过到SelectFilter2脚本自动。

+0

谢谢,这是问题! – kviktor