pgutils.py 354 B

123456789
  1. def chunk_queryset(queryset, chunk_size=20):
  2. ordered_queryset = queryset.order_by("-pk") # bias to newest items first
  3. chunk = ordered_queryset[:chunk_size]
  4. while chunk:
  5. last_pk = None
  6. for item in chunk:
  7. last_pk = item.pk
  8. yield item
  9. chunk = ordered_queryset.filter(pk__lt=last_pk)[:chunk_size]