N+1 queries: an example with orders, customers and items

Django N+1 Queries November 13, 2026 python

What does an N+1 query problem look like in Django code?

python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# ======================================================================
# Q: What does an N+1 query problem look like in Django code?
# ======================================================================

# models: Order -> Customer (FK), Order -> OrderItem (reverse FK) -> Product (FK)

orders = Order.objects.all()[:100]          # 1 query
for o in orders:
    print(o.customer.name)                  # +100 queries (1 per order)
    for item in o.items.all():              # +100 queries
        print(item.product.title)           # +1 per item (e.g. +500)
# Total: ~701 queries