пытается показать / скрыть фильтр change_list в django admin - PullRequest
1 голос
/ 07 июня 2011

Я пытаюсь показать скрытие поля фильтра (серое поле справа) на странице администратора django 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 %}

Но это ничего не делает. Как я могу получить этот фильтр скрыть?

Ответы [ 4 ]

2 голосов
/ 07 июня 2011

ОК, что я сделал, я добавил немного 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 здесь .

1 голос
/ 01 февраля 2013

Вы можете добавить javascript к страницам администратора в классе мультимедиа ModelAdmin.Поместите функцию, чтобы свернуть фильтр.

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

Вот страница с другим способом достижения желаемого, без взлома шаблонов администратора.Это похоже на более чистый подход ко мне.

Свернуть фильтр списка в django-admin

0 голосов
/ 25 ноября 2011

Прямого ответа нет, но grappelli https://github.com/sehmaschine/django-grappelli предоставляет эту функцию из коробки и соответственно использует код javascript, чтобы скрыть фильтры, но вы, вероятно, уже знаете о grapelli / НТН

0 голосов
/ 07 июня 2011

Дефисы не являются допустимыми символами в идентификаторах JavaScript (вы можете найти этот вопрос в отношении допустимых имен переменных JavaScript полезными - обратите внимание, что имена переменных и имена функций считаются как "идентификаторы").

Попробуйте изменить имя вашей функции на toggle_filter.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...