Как добавить дополнительные контекстные данные в LISTVIEW, не нарушая встроенную нумерацию страниц - PullRequest
0 голосов
/ 15 апреля 2019

Вопрос о проблеме разбивки на страницы:

Почему, если у меня есть, например, следующее LISTVIEW:


class BoatListView(ListView):
    model = BoatModel
    template_name = "boats.html"
    paginate_by = 5

    def get_context_data(self, *, object_list=None, **kwargs):
        context = ListView.get_context_data(self, object_list=None, **kwargs)
        context["boats"] = BoatModel.objects.all()
        context["images"] = BoatImage.objects.all()
        return context

, и я буду использовать контекст «лодки» и «изображения» в шаблоне, например:


{% for boat in boats %}
some code here
{% endfor %}
...
…
….
{% bootstrap_pagination page_obj    %}

paginator в этом случае вообще не будет работать (загрузчик один или оригинальный Django https://docs.djangoproject.com/en/2.2/topics/pagination/#using-paginator-in-a-view), без разницы?

Но как только я поменяю «лодки» и «images ”to“ object_list ”- paginator начнет нумерацию страниц.

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

Спасибо!

1 Ответ

1 голос
/ 15 апреля 2019

ListView объявляет атрибут object_list, который принимает набор запросов от get_queryset().При построении context этот атрибут используется для определения нумерации страниц.Вы можете переопределить поведение нумерации страниц в get_context_data, изменив то, что отправляется как набор запросов в self.paginate_queryset(queryset, page_size) (хотя я не вижу причин для этого).

Посмотрите, какListView работает здесь .

...