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