[英]get_object_or_404 with values
views.py:
def car(request, car_id):
car = get_object_or_404(Car, pk=car_id, active=1)
return render(request, 'car.html', {'car': car,}
)
在car.html中 :
...
{{ car.mark }}, {{ car.options.year }}, etc.
...
因此,我對數據庫有很多請求。 在另一種觀點,我使用
all_cars = Cars.objects.all().filter(active=1).values(...)
在這個變體中,我只有2個對db的請求。
是的,我知道,可以在汽車視圖中使用:
car = Car.objects.filter(id=car_id, active=1).values(...)[0]
是否還有其他變體可以對get_object_or_404或類似對象執行相同的操作,而不是對db執行許多請求?
謝謝!
您可以將queryset作為第一個參數而不是模型類傳遞。 在這里,您可以使用select_related
(和prefetch_related
,但似乎您需要第一個)來減少數據庫查詢:
def car(request, car_id):
cars = Car.objects.select_related('options')
car = get_object_or_404(cars, pk=car_id, active=1)
return render(request, 'car.html', {'car': car})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.