Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 获取带有值的\u对象\u或\u 404_Python_Django - Fatal编程技术网

Python 获取带有值的\u对象\u或\u 404

Python 获取带有值的\u对象\u或\u 404,python,django,Python,Django,视图。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 =

视图。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_或_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})

可以将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})

如果你只想要一件物品,你不应该使用
Car.objects.get
你的问题不清楚。是否要在单个查询中按车辆id和活动字段进行筛选?@TanveerAlam我希望使用模板中的模型字段,并将对数据库的请求数量降至最低。如果我使用get_object_或_404,我会有很多请求如果你只想要一件你不应该使用的物品,那么你的问题不清楚。是否要在单个查询中按车辆id和活动字段进行筛选?@TanveerAlam我希望使用模板中的模型字段,并将对数据库的请求数量降至最低。如果我使用get_object_或_404,我会有很多请求