我有Django的一個通用的列表視圖返回大約300個對象(除非在執行搜索)。只處理子集(並返回原來的查詢集)
我有分頁集合僅將對象的顯示器10。
所以我查詢數據庫,然後通過迭代的對象,他們的處理和顯示前增加額外的價值。我注意到所有300個對象都完成了處理,並且分頁在處理完成後完成。所以我只想對要顯示的對象進行處理以提高性能。
我計算所述查詢集的對象應當被處理0-10爲第1頁,11-20 2頁,21-30 3頁等
現在我要處理的索引只顯示範圍內的對象,但返回完整的查詢集(所以genreic視圖按預期工作)。
起初我想:
for object in queryset[slice_start:slice_end] :
# process things here
return queryset
但切片彷彿回到一個新的查詢集,和原來的查詢集對象不具有任何的計算值。
目前我的解決辦法是:
index = -1
for object in queryset:
index += 1
if index < slice_start or index > slice_end : continue
# process things here
return queryset
現在這個工作,但它似乎相當哈克,並unelegant爲Python。 有沒有更pythonic的方式來做到這一點?
您是否使用Django的分頁程序類? –