1

我有一个相当复杂的 QuerySet,它使用大量带注释的值来获取整个记录集的一些计数和总和。结果行被分组,对于每个组,我显示该列的总和,或该列的计数等。

问题是,当我对查询集进行切片以便对数据进行分页时,查询是评估的,并且计数和总和现在与切片查询集相关,而不是完整的查询集。

有没有办法避免这种情况,即保持总和/计数显示在返回的整个行中但仍返回切片查询集?

我试图看看我是否可以使查询集首先执行并且只在它执行后对其进行切片,但找不到如何做到这一点,所以我不知道这是否可行(会吗?)

非常感谢,哈雷尔

4

2 回答 2

2

您应该能够通过执行以下操作来评估要评估的查询集:

qs = list(qs)

到那时,它不再是一个查询集,而是一个普通的 Python 列表,可以像往常一样被切片。

当然,为分页执行此操作的问题在于,无论查看哪个页面,您都会从数据库中返回整个记录集。如果您的数据集很大,这可能是一个真正的问题。鉴于您的要求,这听起来可能是不可避免的;您的查询要么处理所有记录,要么只处理其中一些记录。如果没有看到更多细节,很难确定。

于 2009-11-12T17:33:30.507 回答
0

我最终运行了一个单独的查询来获取我的总和,并将其结果与相关的实际页面一起返回。我正在处理的数据量并不能真正让我处理这样的整个查询集。谢谢卡尔!

于 2009-11-13T20:11:40.580 回答