2011-06-07 76 views
1

我試圖顯示Django admin change_list.html頁面的過濾器框(灰色框在右側)。試圖顯示/隱藏在Django中的change_list過濾器admin

我試圖創建一個簡單的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 %} 

但是這並沒有做任何事情。我怎樣才能讓那個濾波器隱藏起來?

回答

2

OK我所做的就是我加了一些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

0

連字符在JavaScript標識符中不是有效字符(您可能會發現this question上的有效JavaScript變量名稱很有用 - 請注意,變量名稱和函數名稱都計爲「標識符」)。

嘗試將您的函數名更改爲toggle_filter

1

您可以可以添加JavaScript來ModelAdmin媒體類中的管理頁面。在那裏放置一個函數來摺疊過濾器。

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

這是一個不同的方式實現你想要的,而不是黑客管理模板的頁面。這對我來說似乎是一個更清潔的方法。

Minimize the list filter in django-admin

相關問題