1
看看這個模型(這是假設):Django的一個艱難的關係
class Manufacturer(models.Model):
#...
class Car(models.Model):
manufacturer = models.ForeignKey(Manufacturer)
#...
class City(models.Model):
#...
class Manager(models.Model):
manufacturer = models.ForeignKey(Manufacturer)
city = models.ForeignKey(City)
#...
我想查詢的是:汽車及其製造商的經理的列表(假設這不是重要的幾個條件在問題中)以及他們的城市。這可以在某種程度上通過下面的代碼來完成:
manager_car = defaultdict(list)
cars = Car.objects.select_related('manufacturer').filter(...)
for car in cars:
managers = car.manufacturer.manager_set.select_related('city').filter(...)
for manager in managers:
#if <optional condition>:
manager_car[manager].append(car)
會在詞典列表,製造商的汽車的經理,這是我想要的。但是,這段代碼顯然會像數據庫中的汽車一樣運行儘可能多的查詢。
如何一次選擇所有這些實例?
隨着一些重大的調整,但我得到的概念,它工作得很好(只有2個查詢)。謝謝。 – 2010-09-22 19:35:37