我有兩個表,一個「公司」和一個「僱員」:如何使用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