簡體   English   中英

帶有值的get_object_or_404

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM