有没有办法在不创建新的Paginator的情况下更改Paginator object_list?
我想订购传递给Paginator的查询集。
现在我正在根据有序的查询集创建新的Paginator。
由于
答案 0 :(得分:0)
好吧,自从这个问题发布以来,这些年来,我一直将它放在我的Google搜索命中列表的顶部。我刚刚做了一个简单的测试,证明可以将paginator.object_list(以Django QuerySet开头)更改为字典列表,并且可以在模板中无缝运行。正如documentation所说,object_list可以是:“一个列表,元组,QuerySet或其他具有count()或 len ()方法的可切片对象。”
因此,可以以这种方式对列表进行重新排序,或者,如我需要的那样,可以从第二个数据库向字典添加更多字段。您确实需要将替换列表的长度保持与原始QuerySet相同的长度,以便使用Paginator对象的所有其他功能。使用QuerySet方法values()可使您非常轻松地保留所有字段(感谢@David Wolever为this 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