【问题标题】:How to properly render FilteredSelectMultiple如何正确呈现 FilteredSelectMultiple
【发布时间】:2014-08-25 16:11:22
【问题描述】:

我正在使用 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

这是结果顺便说一句

编辑:工作模板如下所示

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

【问题讨论】:

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


    【解决方案1】:

    管理 JS 小部件都依赖于 JSI18N 脚本。将此添加到您的模板标题中:

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

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

    【讨论】:

    • 谢谢,这就是问题所在!
    猜你喜欢
    • 2018-12-19
    • 2017-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多