Django

ORM Queries

filter, Q objects, and select_related

ORM Queries

from django.db.models import Q, Count

# Filter
Task.objects.filter(is_done=False, project__owner=request.user)

# Q objects
Task.objects.filter(Q(priority="high") | Q(due_date__lt=today))

# Annotations
Project.objects.annotate(task_count=Count("tasks"))

# Performance: avoid N+1
tasks = Task.objects.select_related("project").prefetch_related("tags")

Production: Use Django Debug Toolbar in dev to spot duplicate queries; add select_related / prefetch_related before launch.