About Paginating QuerySets in Management Commands
When developing Django management commands, paginate QuerySets using Django pagination to improve the performance and memory usage:
from django.core.management.base import BaseCommand
from django.contrib.auth.models import User
from django.core.paginator import Paginator
class Command(BaseCommand):
PAGE_SIZE = 50
def handle(self, *args, **options):
users = User.objects.all().order_by("id")
paginator = Paginator(users, self.PAGE_SIZE)
for page_num in paginator.page_range:
page = paginator.get_page(page_num)
for user in page:
full_name = user.get_full_name() or "No name set"
self.stdout.write(
f"Name: {full_name} | "
f"Email: {user.email} | "
f"Active: {user.is_active}"
)
Tips and Tricks Programming Performance Django 5.2 Django 4.2 Django 3.2
Also by me
Django Paddle Subscriptions app
For Django-based SaaS projects.
Django GDPR Cookie Consent app
For Django websites that use cookies.