#django #django-templates
#django #django-шаблоны
Вопрос:
У меня возникли некоторые проблемы, когда я хочу установить флажок. Когда я отправляю форму, все флажки установлены. итак, idk, как изменить оператор if для этого: (
<div class="form-group">
<label >Marca</label>
{% for brand in q %}
<div class="custom-control custom-checkbox">
<input type="checkbox" class="custom-control-input" id="{{brand.brand}}" name="test" value="{{brand.brand}}" {% if marca %} checked="checked" {%endif%}>
<label class="custom-control-label" for="{{brand.brand}}" style="cursor: pointer;">{{brand.brand}}</label>
</div>
{% endfor %}
</div>
И вот вид:
marca = request.GET.get('test')
if marca :
products = products.filter(brand__name__in=request.GET.getlist('test'))
Все остальное в порядке. Он показывает мне бренды, которые я выбираю. Поэтому я просто хочу сохранить флажок, который я установил: (и я думаю, проблема в том, что оператор If в шаблоне
Ответ №1:
Просто передайте набор значений в значениях в шаблон:
marca_vals = set(request.GET.getlist('test'))
# …
context = {
'marca_vals': marca_vals,
# …
}
return render(request, 'some_template.html', context)
затем в шаблоне вы можете отобразить его с checked
помощью, если значение находится в marca_vals
:
<input type="checkbox" {% if brand.brand in marca_vals %}checked{% endif %} class="custom-control-input" id="{{brand.brand}}" name="test" value="{{brand.brand}}">
Однако вы можете рассмотреть возможность использования формы или даже django-filters
[readthedocs], чтобы сделать фильтрацию и визуализацию формы более удобными.
Комментарии:
1. Я сделал это, и это продолжает оставаться тем же самым: (он не сохраняет чек
2. @AlexCuadra: вы перешли
marca_vals
к шаблону? Что произойдет , если вы сделаете рендеринг{{ marca_vals }}
?3. Да, я передаю его, как вы мне сказали, но после того, как я отправил заявку, ничего не проверяется. И если я только визуализирую как {{marca_vals}}, все флажки будут установлены
4. @AlexCuadra: нет, я просто имею в виду, что вы видите в шаблоне при рендеринге
{{ marca_vals }}
. Это делается для проверки правильности передачи значений в шаблон.5. Но в флажках он не сохраняется:/ это странно