админ django list_filter слишком длинный - PullRequest
3 голосов
/ 22 марта 2012

У меня есть list_filter с множеством секторов. Этот список в правой части страницы слишком длинный.

Могу ли я использовать вместо этого поле выбора ввода, поскольку я не могу выбрать более одного сектора?

Я видел это раньше, скриншоты, но не могу найти способ сделать это.

редактировать:

У меня есть собственный FilterSpec, а не list_filter

Ответы [ 4 ]

1 голос
/ 22 марта 2012

Вы можете написать свой собственный FilterSpec (пользовательский фильтр списка администратора).

Эта функция еще не является частью кода Django;планируется для версии 1.2.Вам нужно будет применить этот патч к коду Django: http://code.djangoproject.com/ticket/5833.

Существует множество примеров использования stackoverflow, например: https://stackoverflow.com/a/1294952/342473.

0 голосов
/ 23 марта 2012

Вот как я решил (jQuery):

 $('#changelist-filter ul').each(function(){

        var maxlength = 10;

        if ($(this).children().length > maxlength )
        {
            var list=$(this),
                select=$(document.createElement('select')).insertBefore($(this).hide());

            $('>li a', this).each(function(){
                console.log($(this).parent().attr('class'));

                var target=$(this).attr('target'),
                    option=$(document.createElement('option'))
                        .appendTo(select)
                        .val(this.href)
                        .attr('selected', $(this).parent().attr('class'))
                        .html($(this).html())
                        .click(function(){
                            if (target==='_blank'){
                                window.open($(this).val());
                            }
                            else{
                                window.location.href=$(this).val();
                            }
                        });
            });
            list.remove();

        }
    });
0 голосов
/ 22 марта 2012

Длинный список, который вы сказали, получен из шаблона по умолчанию 'admin / filter.html' в django / contrib / admin / templates / admin / filter.html встроенного ListFilters.

Существует несколько способов его настройки:

  1. Глобально переопределить 'admin / filter.html'. Визуализируйте тег выбора вместо тега ul, если количество вариантов достигло определенного предела. Это влияет на все фильтры списка в админке. У тега select должен быть обработчик события onchange, например

  2. Установите атрибут шаблона в вашем конкретном экземпляре ListFilter, указав имя настроенного шаблона фильтра. Содержание шаблона похоже на # 1. Для этого требуется Django 1.4+.

  3. Добавьте javascript в экземпляр ModelAdmin для преобразования HTML-содержимого внутри тега ul для выбора тега, как только DOM будет полностью загружен.
0 голосов
/ 22 марта 2012
...