django - 如何在 LISTVIEW 中添加额外的上下文数据而不破坏内置分页
问题描述
关于分页问题的问题:
为什么如果我有例如以下 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),没有区别吗?
但是一旦我将“boats”和“images”更改为“object_list” - paginator 就会开始分页。
有什么问题,在这种情况下,如果我确实需要在使用 paiginator 的能力范围内添加额外的上下文,我该如何添加?
谢谢!
解决方案
ListView
声明一个属性object_list
,该属性从get_queryset()
. 构造时context
,此属性用于定义分页。您可以通过更改作为查询集发送的内容来覆盖分页get_context_data
本身的行为self.paginate_queryset(queryset, page_size)
(尽管我看不到这样做的理由)。
看看 ListView 是如何工作的。
推荐阅读
- google-cloud-platform - GCP 监控代理不断增加内存使用量
- rust - 使用正确的(特定于目标的)编译器链接到外部对象
- python - 如何可视化最近的加密交换订单
- flutter - 使用 Get.put 在 Flutter 中创建类的实例
- r - 如何将 Web of Science 高级查询变成 R 中的正则表达式?
- sass - “粗鲁。” 未被识别为内部或外部命令、可运行程序或批处理文件
- react-native - NPM 卡在理想树上:定时理想树
- html - 使用 HTML 并排创建两个表格
- api - 通过一个批处理文件运行多个soapui项目
- angular - 将复杂对象传递给 Web API 时对象值接收不正确