maksell
@maksell

Как получить 2 гет параметра?

Есть 2 формы. 1 - поиск, 2 фильтрация

1.
<form class="form" action =" {% url 'search' %}" >
                    <div class="input-group">
                        <input class="form-control border-right-0 border " type="search" placeholder="Искать товары", name="search">
                        <span class="input-group-append">
                            <div class="input-group-text bg-transparent p-0">
                            </div>
                            <button class="btn btn-outline-success " type="submit"><i class="fa fa-search"></i></button>
                        </span>
                    </div>
                </form>


2.
<form class="form for_change_items" method="get" name ="a" > 
                                                                 
                                        <div class="form-check p-0  " >


                                            <input class="form-check-input"  type="radio" onClick="a.submit()"  name="model_or_item"  id="model" value="model">
                                            <input class="form-check-input"  type="radio" onClick="a.submit()"  name="model_or_item" id="item" value="item" >

                                            <a class= "gray_text">{{items.count }} товар (-а, -ов)</a>

                                            <input class="form-check-input" type="radio" name="change_items" onClick="a.submit()" checked id="2_items" value="2_items" >
                                            <input class="form-check-input" type="radio" name="change_items" onClick="a.submit()"  id="many_items" value="many_items">
                                            <label  {% if model_or_item == 'item' %} style="  opacity:0.7;" {% endif %} class="form-check-label font-weight-bolder" for="model">
                                                <a  {% if model_or_item == 'model' %} style=" text-decoration: underline;" {% endif %}>Модель</a>
                                            </label>
                                            <label  {% if model_or_item == 'model' %} style=" opacity:0.7;" {% endif %} class="form-check-label font-weight-bolder " for="item">
                                                <a  {% if model_or_item == 'item' %} style=" text-decoration: underline;" {% endif %}>Изделие</a>
                                            </label> 
                                            
                                        </div>
                                        
                                    </form>


как я их получаю в views.py
search = request.GET.get('search')
change_items = request.GET.get('change_items', '2_items')
model_or_item = request.GET.get('model_or_item', 'model')
items = Item.objects.filter(title__icontains = search)


Если я что-то ищу, а потом начинаю фильтровать товар, страница перезагружается и search становится None.
Как сохранять значение в переменной search
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
Andrew_Pinkerton
@Andrew_Pinkerton
Как получить 2 гет параметра?

Ты их и так получаешь.
spoiler
search = request.GET.get('search')
change_items = request.GET.get('change_items', '2_items')
model_or_item = request.GET.get('model_or_item', 'model')


С отправкой формы нужно сохранять значение определённых параметров строки запроса, а не сбрасывать их.
Т.е. перед отправкой формы меняем значения которые изменил пользователь (фильтр), и не забываем отправить
вместе с ними остальные значения (поиск).

Прочитай про QuerySet, url templatetag и Request and response objects

И подумай как это можно применить для решения задачи.

P.S. Можешь заюзать https://django-filter.readthedocs.io для начала, и там же посмотреть как это сделано.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы