试图在 django admin 中显示/隐藏 change_list 过滤器
Posted
技术标签:
【中文标题】试图在 django admin 中显示/隐藏 change_list 过滤器【英文标题】:trying to show/hide the change_list filter in django admin 【发布时间】:2011-09-10 00:36:45 【问题描述】:我正在尝试显示隐藏 django admin change_list.html 页面的过滤框(右侧的灰色框)。
我尝试创建一个简单的 javascript 函数并将其添加到额外的头部中,例如
% extends "admin/change_list.html" %
% block extrastyle %
block.super
<script src=" STATIC_URL js/jquery-1.6.1.js" ></script>
<script>
function toggle-filter()
$("#changelist-filter").toggle("slow");
;
</script>
% endblock %
然后我添加了一个超链接并试图让它像这样运行该功能
% block object-tools %
<ul class="object-tools">
<li><a onclick="toggle-filter()" id="hideBut" href="#" class="viewsitelink">% trans "Toggle Filter" %</a></li>
</ul>
% endblock %
但这并没有做任何事情。我怎样才能让那个过滤框隐藏起来?
【问题讨论】:
【参考方案1】:好的,我在 change_list.html 中添加了一些 javascript,如下所示:
<script type="text/javascript">
(function($)
$(document).ready(function($)
$("tr input.action-select").actions();
$('<div id="show-filters" style="float: right;"><a href="#">Show Filters</a></p>').prependTo('div.actions');
$('#show-filters').hide();
$('#changelist-filter h2').html('<a style="color: white;" id="hide-filters" href="#">Filter →</a>');
$('#show-filters').click(function()
$('#changelist-filter').show('fast');
$('#changelist').addClass('filtered');
$('#show-filters').hide();
);
$('#hide-filters').click( function()
$('#changelist-filter').hide('fast');
$('#show-filters').show();
$('#changelist').removeClass('filtered');
);
);
)(django.jQuery);
</script>
工作就像一个魅力。我找到了实际的 javascript here。
【讨论】:
【参考方案2】:您可以在 ModelAdmin 媒体类中添加 javascript 到管理页面。在那里放一个函数来折叠过滤器。
class MyModelAdmin(admin.ModelAdmin):
list_filter = ['bla', 'bleh']
class Media:
js = ['js/list_filter_collapse.js']
这是一个页面,它以不同的方式实现您想要的,而无需破解您的管理模板。这对我来说似乎是一种更清洁的方法。
Minimize the list filter in django-admin
【讨论】:
【参考方案3】:连字符不是 JavaScript 标识符中的有效字符(您可能会发现 this question 对有效的 JavaScript 变量名很有用 - 请注意变量名和函数名都算作“标识符”)。
尝试将您的函数名称更改为toggle_filter
。
【讨论】:
【参考方案4】:没有直接的答案,但 grappelli https://github.com/sehmaschine/django-grappelli 提供了开箱即用的此功能,并相应地使用 javascript 代码来显示隐藏过滤器,但您可能已经了解grapelli /HTH
【讨论】:
以上是关于试图在 django admin 中显示/隐藏 change_list 过滤器的主要内容,如果未能解决你的问题,请参考以下文章
在标题 Django 管理工具中隐藏 Django 徽标/名称