javascript 尝试在django admin中显示/隐藏change_list过滤器

b5buobof  于 2023-11-15  发布在  Java
关注(0)|答案(4)|浏览(93)

我正在尝试显示隐藏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 %}


但这一点用都没有。我怎么才能把过滤盒藏起来?

mw3dktmi

mw3dktmi1#

好吧,我所做的是我添加了一些JavaScript到change_list. html像这样:

<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 &rarr;</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

w7t8yxp5

w7t8yxp52#

连字符在JavaScript标识符中不是有效字符(您可能会发现有效JavaScript变量名上的this question很有用-请注意,变量名和函数名都算作“标识符”)。
尝试将函数名更改为toggle_filter

oknwwptz

oknwwptz3#

你可以在ModelAdmin媒体类中添加JavaScript到管理页面。在那里放一个函数来折叠过滤器。

class MyModelAdmin(admin.ModelAdmin):
    list_filter = ['bla', 'bleh']
    class Media:
        js = ['js/list_filter_collapse.js']

字符串
这里有一个页面,用不同的方式来实现你想要的,没有黑客攻击你的管理员模板。这对我来说似乎是一个更干净的方法。
在django-admin中最小化列表过滤器

omjgkv6w

omjgkv6w4#

没有一个直接的答案,但grapelli https://github.com/sehmaschine/django-grappelli提供了这个功能,开箱即用,并使用JavaScript代码相应地显示隐藏过滤器,但你可能已经知道grapelli /HTH

相关问题