Django CBV ListView, доступ как к результатам с разбивкой на страницы, так и к результатам без разбивки на страницы

Я создал представление списка, используя класс общего представления ListView с функциями разбиения на страницы и поиска. Теперь я хочу включить в эту же страницу карту с маркерами для всех результатов, без разбиения на страницы.

Есть ли способ получить результаты как с разбивкой на страницы, так и без разбивки на страницы, не выполняя дублирующий запрос?


person yam    schedule 30.03.2018    source источник
comment
Что ж, вам придется сделать дублирующий запрос, потому что разбивка на страницы выполняется путем отправки смещения/лимита в базу данных.   -  person Daniel Roseman    schedule 30.03.2018


Ответы (1)


Мы можем сделать это, переопределив метод def get_context_data(self, **kwargs). Требуется только один запрос.

class MyListview(ListView):

    def get_context_data(self, **kwargs):
        kwargs['obj_list'] = list(kwargs['obj_list'])
        my_obj_list = kwargs['obj_list']
        context = super(MyListview, self).get_context_data(**kwargs)
        context['my_obj_list'] = my_obj_list
        return context
person anjaneyulubatta505    schedule 02.04.2018