아래 함수batch_qs_via_ids의 첫번째 인자로 queryset 준다. 정해진 batch_size에 해당하는 길이만큼 나누어져 데이타를 처리할 수 있다.
def batch_qs_via_ids(qs, batch_size=100):
queryset = _get_queryset(qs)
pk_name = queryset.model._meta.pk.name
ids = list(queryset.values_list(pk_name, flat=True).distinct())
logger.info('Snapshot of %s ids we will iterate over.', len(ids))
paginator = Paginator(ids, batch_size)
for page_num in paginator.page_range:
page = paginator.page(page_num)
query = {'%s__in' % pk_name: page.object_list}
batch = queryset.filter(**query)
yield batch
# Clear out the DB connections queries because it bloats up RAM.
reset_queries()