Получить несколько строк одним запросом в django?

Как мне создать QuerySet, который получает несколько строк из django? Я думал, что filter () будет работать, но, похоже, дела обстоят хуже.

Например, у меня есть две строки в модели Car с двумя текстовыми атрибутами (лицензия и vin). Теперь предположим, что я хочу напечатать лицензии и винные карты этих автомобилей. Как я могу сделать это с помощью одного вызова базы данных?

Вот ответ, который вызовет два вызова базы данных:

#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

Хммм, это странно, почему выполняется четыре вызова базы данных? Есть ли способ заставить его получить два в одном вызове базы данных?

22
задан user749618 14 June 2011 в 00:46
поделиться