¿Cuál es la diferencia entre select_related y prefetch_related en Django ORM?

En Django doc,

select_related() "sigue" las relaciones de clave externa, seleccionando datos adicionales de objetos relacionados cuando ejecuta su consulta.

prefetch_related() realiza una búsqueda por separado para cada relación y realiza la "unión" en Python.

¿Qué significa "hacer la unión en python"? ¿Alguien puede ilustrar con un ejemplo?

Entiendo que para una relación de clave extranjera, useselect_related; y para la relación M2M, useprefetch_related. ¿Es esto correcto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta