Listar 50 pedidos y luego acceder a order.customer.name en un bucle dispara 51 consultas. En Django, la solución habitual para esta foreign key es…
Opciones
prefetch_related("customer")select_related("customer")(Opción correcta).only("customer").raw()
Respuesta
select_related("customer")
Por qué
Este es el problema N+1: 1 consulta para traer los pedidos y luego 1 consulta extra por pedido para traer su cliente.
select_related("customer") carga pedidos y clientes juntos en una consulta con un SQL JOIN.
prefetch_related usa una segunda consulta para todas las filas relacionadas a la vez (para relaciones many-to-many o inversas). En SQLAlchemy: joinedload / selectinload.
Recuerda
Bucle que consulta por elemento = N+1. Carga antes los datos relacionados.