INNER CODE UNIT · Python
chunked_queryset
Patrowl/PatrowlManager · common/utils/__init__.py:45
def chunked_queryset(queryset, chunk_size):
""" Slice a queryset into chunks. """
start_pk = 0
queryset = queryset.order_by('pk')
while True:
# No entry left
if not queryset.filter(pk__gt=start_pk).exists():
break
try:
# Fetch chunk_size entries if possible
end_pk = queryset.filter(pk__gt=start_pk).values_list(
'pk', flat=True)[chunk_size - 1]
# Fetch rest entries if less than chunk_size left
except IndexError: