Django过滤器按品牌



我正在用django制作一个电子商务网站,我的过滤器有问题,我想展示我选择的所有品牌。以下是视图:

marca = request.GET.get('marca')
if marca == 'marca':
products = products.filter (brand__name = marca)

马卡是布兰德。

这是模板:

{% for brand in q %}
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="{{brand.brand}}" name="marca" value="{{brand.brand}}" {% if marca == '{{brand.brand}}' %} checked="checked" {%endif%}>
<label class="custom-control-label" for="{{brand.brand}}">{{brand.brand}}</label>
</div>
{% endfor %}

好吧,它给我看了过滤器,但只是我检查的最后一个。如果我检查两个品牌,它只显示最后一个。所以我需要一些帮助:(

这是.get(…)方法[Django-doc]的预期行为。您可以使用.getlist(…)方法[Django-doc]来获得所有选定品牌的列表:

products = products.filter(brand__name__in=request.GET.getlist('marca'))

您可以使用__in查找[Django-doc]来检查该名称是否在品牌列表中。

然而,检查marca == 'marca'是很奇怪的。这只会在marca为字符串marca的情况下进行筛选。

最新更新