For循环变量不';t在Django模板中的if条件下工作
我首先从一个视图中选取一个特定品牌的汽车,然后将其传递到另一个视图中,这样用户就可以选择汽车的型号 我的观点。派克For循环变量不';t在Django模板中的if条件下工作,django,django-templates,Django,Django Templates,我首先从一个视图中选取一个特定品牌的汽车,然后将其传递到另一个视图中,这样用户就可以选择汽车的型号 我的观点。派克 def driver_dashboard_trip_brand (request, brand): brands = VehicleBrand.objects.all() context = { "brands":brands, "chosen_brand":brand } re
def driver_dashboard_trip_brand (request, brand):
brands = VehicleBrand.objects.all()
context = {
"brands":brands,
"chosen_brand":brand
}
return render (request, "app/driver_dashboard.html", context)
我的驱动程序\u dashboard.html
<div class="mb-3">
<select class="form-select" aria-label="Default select example" id="brand" name="brand" onchange="submitBrand(event)">
<option value="">Choose a brand</option>
{% for brand in brands %}
{% if brand == chosen_brand %}
<option value="{{brand}}" selected>{{brand}}</option>
{% else %}
<option value="{{brand}}">{{brand}}</option>
{% endif %}
{% endfor %}
</select>
</div>
选择一个品牌
{品牌中品牌的百分比%}
{%if brand==所选品牌%}
{{brand}}
{%else%}
{{brand}}
{%endif%}
{%endfor%}
但后来我意识到,brand
变量在if条件下无法识别
但是,如果我添加这样的内容{%if selected\u brand=='BMW%}
,它工作得非常好,但是如果我添加这样的内容{%if brand=='BMW%}
,它就不起作用了。有什么我错过的吗
非常感谢您的帮助
谢谢 因为
品牌
是一个对象,您正在与字符串进行比较。所以,请确保按属性进行比较,该属性应为字符串
{% for brand in brands %}
{% if brand.name == chosen_brand %}
{{brand}}
{% else %}
{{brand}}
{% endif %}
{% endfor %}
{%用于品牌中的品牌%}
{%if brand.name==所选品牌%}
{{brand}}
{%else%}
{{brand}}
{%endif%}
{%endfor%}
*注意:-我使用brand.name作为示例,您可能有其他属性名称,如:model_name或类似的sthg
此外,您可能会问,{{brand}}
只给出车辆名称,为什么我们不能进行比较。答案是,\uuu str\uu
方法,该方法仅用于给出对象的字符串表示形式
Ref:因为
品牌
是一个对象,您正在与字符串进行比较。所以,请确保按属性进行比较,该属性应为字符串
{% for brand in brands %}
{% if brand.name == chosen_brand %}
{{brand}}
{% else %}
{{brand}}
{% endif %}
{% endfor %}
{%用于品牌中的品牌%}
{%if brand.name==所选品牌%}
{{brand}}
{%else%}
{{brand}}
{%endif%}
{%endfor%}
*注意:-我使用brand.name作为示例,您可能有其他属性名称,如:model_name或类似的sthg
此外,您可能会问,{{brand}}
只给出车辆名称,为什么我们不能进行比较。答案是,\uuu str\uu
方法,该方法仅用于给出对象的字符串表示形式
参考资料:这里有几件事不对
def driver_dashboard_trip_brand (request, brand):
brands = VehicleBrand.objects.all()
context = {
"brands":brands,
"chosen_brand":brand
}
在这里,在品牌列表中,您可以获得VehicleBrand
对象的查询集(类似于列表)。但是,在选择的\u brand
中,您正在传递一个字符串,该字符串是从请求路径参数中获得的。这就是为什么if条件在Django模板中不起作用的原因。最简单的解决办法是
在selected\u brand
中,通过使用brand
获取VehicleBrand.objects.get()
或VehicleBrand.objects.filter().first()查询来传递VehicleBrand
对象
在上下文的品牌
键中传递名称列表
这里有几件事不对
def driver_dashboard_trip_brand (request, brand):
brands = VehicleBrand.objects.all()
context = {
"brands":brands,
"chosen_brand":brand
}
在这里,在品牌列表中,您可以获得VehicleBrand
对象的查询集(类似于列表)。但是,在选择的\u brand
中,您正在传递一个字符串,该字符串是从请求路径参数中获得的。这就是为什么if条件在Django模板中不起作用的原因。最简单的解决办法是
在selected\u brand
中,通过使用brand
获取VehicleBrand.objects.get()
或VehicleBrand.objects.filter().first()查询来传递VehicleBrand
对象
在上下文的品牌
键中传递名称列表
是的,非常好,非常感谢!!是的,非常好,非常感谢!!嘿,你的方法没有错,但是如果你有另一个查询,你会降低网站的性能,但是非常感谢你的帮助!嘿,你的方法没有错,但是如果你有另一个查询,你会降低网站的性能,但是非常感谢你的帮助!