如何在不中断内置分页的情况下在LISTVIEW中添加额外的上下文数据

时间:2019-04-15 12:07:58

标签: django django-views django-pagination

有关分页问题的问题:

为什么要例如以下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

并且我将在模板中使用“ boats”和“ images”上下文,例如:


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

在这种情况下,分页器根本无法工作(引导一个或原始的Django https://docs.djangoproject.com/en/2.2/topics/pagination/#using-paginator-in-a-view),没有区别吗?

但是,只要我将“船”和“图像”更改为“ object_list”,分页器就会开始分页。

问题是什么?在这种情况下,如果确实需要在使用paiginator的能力范围内,我该如何添加额外的上下文?

谢谢!

1 个答案:

答案 0 :(得分:1)

ListView声明一个属性object_list,该属性采用get_queryset()中的查询集。构造context时,此属性用于定义分页。您可以通过更改get_context_data中作为查询集发送的内容来覆盖self.paginate_queryset(queryset, page_size)本身中的分页行为(尽管我看不出这样做的理由)。

看看ListView的工作原理here