如何在不破坏内置分页的情况下在 LISTVIEW 中添加额外的上下文数据
How to add extra context data in LISTVIEW without breaking built-in 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
我会在模板中使用“船”和“图像”上下文,例如:
{% for boat in boats %}
some code here
{% endfor %}
...
…
….
{% bootstrap_pagination page_obj %}
paginator 在这种情况下根本不起作用(bootstrap 一个或原始 Django https://docs.djangoproject.com/en/2.2/topics/pagination/#using-paginator-in-a-view),没有区别吗?
但是一旦我将“船”和“图像”更改为“object_list”-分页器就会开始分页。
问题是什么?在这种情况下,如果我确实需要在使用 paiginator 的能力范围内添加额外的上下文,我该如何添加?
谢谢!
ListView
声明了一个属性 object_list
,它从 get_queryset()
获取查询集。在构造context
时,该属性用于定义分页。您可以通过更改 self.paginate_queryset(queryset, page_size)
中作为查询集发送的内容来覆盖 get_context_data
本身的分页行为(不过我没有看到这样做的理由)。
看看 ListView 是如何工作的here。
关于分页问题的问题:
为什么如果我有以下 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 在这种情况下根本不起作用(bootstrap 一个或原始 Django https://docs.djangoproject.com/en/2.2/topics/pagination/#using-paginator-in-a-view),没有区别吗?
但是一旦我将“船”和“图像”更改为“object_list”-分页器就会开始分页。
问题是什么?在这种情况下,如果我确实需要在使用 paiginator 的能力范围内添加额外的上下文,我该如何添加?
谢谢!
ListView
声明了一个属性 object_list
,它从 get_queryset()
获取查询集。在构造context
时,该属性用于定义分页。您可以通过更改 self.paginate_queryset(queryset, page_size)
中作为查询集发送的内容来覆盖 get_context_data
本身的分页行为(不过我没有看到这样做的理由)。
看看 ListView 是如何工作的here。