Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python: Django
Войти
Регистрация
Восстановить пароль
 
kadr
0 / 0 / 1
Регистрация: 29.11.2012
Сообщений: 42
1

Admin list_filter multiple

20.11.2018, 16:45. Просмотров 528. Ответов 0

Всем привет, столкнулся с такой задачей:
Необходимо в админке на странице списка элементов, реализовать фильтрацию, множественную. Просто list_filter = [], создает тег селект без возможности множественного выбора.
Используется не стандартная админка (django-jet)
В файле admin.py переопределил фильтр:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class ServicesListFilter(admin.SimpleListFilter):
    """
    переопределяем фильтр для услуг
    """
 
    title = "Услуги"
    parameter_name = "services__id__in"
    template = "admin/custom_filter.html"
 
    def lookups(self, request, model_admin):
        """возвращаем все услуги для тега селект """
        services = Service.objects.all()
        for service in services:
            yield (str(service.id), service.title)
 
    def values(self):
        """ Returns a list of values to filter on. """
        values = []
        value = self.used_parameters.get(self.lookup_kwarg, None)
        if value:
            values = value.split(",")
        if type(self.field.rel.to._meta.pk) in [IntegerField, AutoField]:
            values = [int(x) for x in values]
 
        return values
 
    def queryset(self, request, queryset):
        """выполняем фильтрацию типа WHERE IN () """
        if self.value():
            return queryset.filter(services__in=self.value().split(","))
        return queryset
 
    def choices(self, cl):
        services = Service.objects.all()
        for service in services:
            filter = cl.get_filters_params()
 
            filter = filter.get(self.parameter_name).split(",")
            filter = [int(item) for item in filter]
            yield {
                "selected": service.id in filter,
                "query_string": "", - здесь пока не понял, что надо воткнуть 
                "display": service.title
            }
создал шаблон admin/custom_filter.html:
HTML5
1
2
3
4
5
6
7
8
9
{% load i18n %}
<h3>{% blocktrans with filter_title=title %} By {{ filter_title }} {% endblocktrans %}</h3>
<ul class="js-example-basic-multiple" multiple="multiple" data-placeholder="Услуги">
    {% for choice in choices %}
    <li {% if choice.selected %} class="selected"{% endif %}>
        <a href="{{ choice.query_string|iriencode }}" title="{{ choice.display }}">{{ choice.display }}</a>
    </li>
    {% endfor %}
</ul>
селект стал множественным, но теперь у него нет события на изменение, то есть при выборе чего нибудь в нем, фильтрация не происходит, значит надо добавить кнопку, только вот добавить не получается, она просто игнориться.
Вопрос, как это сделать, или может есть другой способ.
Django версии 2.1.3
Python 3.7
0
Миниатюры
Admin list_filter multiple  
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2018, 16:45
Ответы с готовыми решениями:

Django multiple db
есть две модели связь one_to_one модели принадлежать разным приложениям user_service class...

Создавать ли admin.py?
В одном учебнике по Джанго, автор создает admin.py. В другом же автор настраивает админку прямо в...

Django admin formset
который час подряд бьют над капризами руководства... и никак не выходит ... собственно проблема:...

Ошибка django-admin
Всем привет. Ребят помогите пожалуйста, хочу создать проект командой django-admin startproject www,...

Редактирование данных в django admin
Имеются две модели таблиц class Catalog(models.Model): name =...

0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.11.2018, 16:45

Symfony2 Upload Multiple Sonata admin - редирект после создания объекта
Всем привет! Нужна помощь с сонатой. Не могу разобраться. Задача такая: редиректнуть на...

Как сделать редирект с wp-admin/ на wp-admin/profile.php только для юзеров?
Здравствуйте. Так как мне не нравится что у обычных юзеров выводится консоль при входе в wp-admin/...

получить все записи из <select multiple='multiple'
как через JQUERY получить все записи из &lt;select multiple='multiple'


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru