我有两个表,一个“公司”和一个“雇员”:如何使用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)
我想列出表中的每一位员工,在公司旁边。通过调用employees = Employee.objects.all()
并在模板循环中调用{{employee.company.name}}
,这很简单。
这个解决方案的问题是它将为循环中的每个项目创建一个新的查询。因此,为每个员工都会有一个查询公司看起来像这样:
SELECT `company`.`id`, `company`.`name`
FROM `company`
WHERE `company`.`id` = 1 # This will of course be the employee.company_id
相反,我希望把它作为最初加入同一个查询得到员工。类似这样的:
SELECT `employee`.`name` AS `name`,
`company`.`name` AS `company_name`
FROM `employee` INNER JOIN `company` ON `employee`.`company_id` = `company`.`id`
Django QuerySet可以吗?如果没有,是否有办法解决这个问题(没有原始的sql)?或者应该忽略这种行为,缓存并考虑“优化”?
我已经阅读了文件的上下,但设法完全错过了这部分。非常感谢!那很尴尬。 – tdolsen 2010-03-11 14:26:47