Флажок Django для фильтра

#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. Но в флажках он не сохраняется:/ это странно