Django Paginator更改object_list

时间:2013-04-09 05:21:42

标签: django django-pagination

有没有办法在不创建新的Paginator的情况下更改Paginator object_list?

我想订购传递给Paginator的查询集。

现在我正在根据有序的查询集创建新的Paginator。

由于

1 个答案:

答案 0 :(得分:0)

好吧,自从这个问题发布以来,这些年来,我一直将它放在我的Google搜索命中列表的顶部。我刚刚做了一个简单的测试,证明可以将paginator.object_list(以Django QuerySet开头)更改为字典列表,并且可以在模板中无缝运行。正如documentation所说,object_list可以是:“一个列表,元组,QuerySet或其他具有count()或 len ()方法的可切片对象。”

因此,可以以这种方式对列表进行重新排序,或者,如我需要的那样,可以从第二个数据库向字典添加更多字段。您确实需要将替换列表的长度保持与原始QuerySet相同的长度,以便使用Paginator对象的所有其他功能。使用QuerySet方法values()可使您非常轻松地保留所有字段(感谢@David Woleverthis tip

以下是一些代码:

new_object_list = list(records_from_paginator.object_list.values())
reordered_or_changed_object_list = reorder_or_change_object_list(new_object_list)
records_from_paginator.object_list = reordered_or_changed_object_list