Как я могу построить QuerySet, который получает несколько строк из django? Я думал, что фильтр() будет работать, но кажется, что он хуже.
Например, у меня есть две строки в модели Car с двумя текстовыми атрибутами (license and 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
Хм, это странно, почему происходит четыре вызова базы данных? Есть ли способ заставить его получить два в одном вызове базы данных?