Tengo dos tablas, una "compañía" y uno "a los empleados":¿Cómo selecciono de varias tablas en una consulta con Django?
class Company(models.Model):
name = models.CharField(max_length=60)
class Employee(models.Model):
name = models.CharField(max_length=60)
company = models.ForeignField(Company)
y quiero enumerar todos los empleados de una mesa, con la Compañía junto a él. Lo cual es bastante simple llamando al employees = Employee.objects.all()
y en el bucle de plantilla a través de él y llamando al {{employee.company.name}}
.
El problema con esta solución es que se creará una nueva consulta para cada elemento en el ciclo. Así que para cada empleado habrá una consulta a la empresa buscando algo como esto:
SELECT `company`.`id`, `company`.`name`
FROM `company`
WHERE `company`.`id` = 1 # This will of course be the employee.company_id
lugar quisiera hacer esta unión inicialmente en la misma consulta conseguir los empleados. Algo como esto:
SELECT `employee`.`name` AS `name`,
`company`.`name` AS `company_name`
FROM `employee` INNER JOIN `company` ON `employee`.`company_id` = `company`.`id`
¿Esto es posible con Django QuerySet? Si no, ¿hay alguna manera de solucionar este problema (sin sql en bruto)? ¿O debería ignorarse este comportamiento, almacenarse en caché y considerarse "optimizado"?
He leído la documentación arriba y abajo, pero me las arreglé por completo para no ver esta parte. Bueno, muchas gracias! Eso fue embarazoso. – tdolsen