Django управлять paginate_by с помощью меню параметров - PullRequest
0 голосов
/ 12 июля 2020

Я пытаюсь добавить к нормальной нумерации страниц еще один вариант. Пользователь должен выбрать, сколько строк отображается на странице. Вот мой код просмотра

class ListaBoeView(ListView):
    model = DatiBoe
    testvar = 7
    queryset = DatiBoe.objects.all() #DatiBoe.objects.filter(BACKSCATTER__gt= testvar)[:5] #DatiBoe.objects.all()
    context_object_name = 'boe_list'
    paginate_by = 3
    template_name = 'filtri/boelista.html'

    # def get(self, request, *args, **kwargs):
    #     new_signup = self.request.GET.get("paginate_by")
    #     print(new_signup)

    def get_paginate_by(self, request, *args, **kwargs):
        try:
            paginate_by = self.paginate_by
            print(self.paginate_by)
            return self.request.GET.get("paginate_by", self.paginate_by)
            #return self.request.user.profile.paginate_by
        except Profile.DoesNotExist:
            return super().get_paginate_by(queryset)

Вот мой код выбора для paginate_by (метод GET)

       <form method="GET">
            <select name="paginate_by" id="">
                <option value="10">10</option>
                <option value="20">20</option>
                <option value="30">30</option>
                <option value="50">50</option>
            </select>
            <input type="submit" value="Paginate">
        </form>

Если я нажимаю кнопку разбиения на страницы, я правильно отформатирую URL-адрес (например: http://127.0.0.1: 8080 / filterri / boe_list /? Paginate_by = 10 ), но каждый раз, когда я нажимаю кнопку «следующий / предыдущий», я возвращаюсь к значению по умолчанию paginate_by = 3 в моем классе.

...