Add iter_queryset method to utils.iterators module.

remotes/origin/enhancement/email-actions
Andrey Antukh 2014-09-16 13:30:10 +02:00
parent 4aef603946
commit 95845b4eda
1 changed files with 14 additions and 0 deletions

View File

@ -16,6 +16,8 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from functools import wraps, partial
from django.core.paginator import Paginator
def as_tuple(function=None, *, remove_nulls=False):
if function is None:
@ -42,3 +44,15 @@ def split_by_n(seq:str, n:int):
while seq:
yield seq[:n]
seq = seq[n:]
def iter_queryset(queryset, itersize:int=20):
"""
Util function for iterate in more efficient way
all queryset.
"""
paginator = Paginator(queryset, itersize)
for page_num in paginator.page_range:
page = paginator.page(page_num)
for element in page.object_list:
yield element