【发布时间】:2011-09-14 08:14:30
【问题描述】:
如何构建一个从 django 获取多行的 QuerySet?我认为 filter() 会起作用,但它似乎更糟。
例如,我在模型 Car 中有两行,有两个文本属性(license 和 vin)。现在说我想打印这些汽车的执照和 vins。如何通过一个数据库调用来做到这一点?
这是一个会进行两次数据库调用的答案:
#using get(), two total queries
a = Car.objects.get(id=1) #query here
b = Car.objects.get(id=2) #query here
print(a.license + a.vin) #no query
print(b.license + b.vin) #no query
这显然不起作用,因为我做了两个 get() 查询。所以接下来我会尝试 filter():
#using filter(), four total queries
c = Car.objects.filter(id__in=(1,2)) #no query
print(c[0].license + c[0].vin) #two queries
print(c[1].license + c[1].vin) #two queries
嗯,这很奇怪,为什么要进行四个数据库调用?有没有办法让它在一个数据库调用中获得两个?
【问题讨论】: