Я понимаю, что флажки могут передавать более одного значения для дальнейшей фильтрации. Как я могу использовать два значения для одного столбца для фильтрации таблицы в - PullRequest
0 голосов
/ 01 апреля 2020

Это мой html файл:

<form action="{% url 'search' %}">
    <div>
<label for="manufacture">Производитель</label><br>
<input type="checkbox" id="manufacture" name="manufacture" value="Samsung">Samsung <br>
<input type="checkbox" id="manufacture" name="manufacture" value="Honor">Honor <br>
<input type="checkbox" id="manufacture" name="manufacture" value="Huawei">Huawei <br>
<input type="checkbox" id="manufacture" name="manufacture" value="Apple">Apple <br>
<input type="checkbox" id="manufacture" name="manufacture" value="Xiaomi">Xiaomi <br>
   </div>
<input type="submit" value="Submit"class="btn btn-primary">
  </form>

Это мои views.py:

def search(request):
queryset_list=Product.objects.order_by('-created')
if 'manufacture' in request.GET: 
    manufacture=request.GET['manufacture']
    if manufacture:
        queryset_list=queryset_list.filter(brand__iexact = manufacture)
 context= {
     products': queryset_list,
 }
 return render (request, 'cart_2/search.html', context)

Когда я проверяю Samsung & Honor одновременно, фильтрация выдает мне только один производитель. И я хочу оба. Пожалуйста, помогите

1 Ответ

0 голосов
/ 01 апреля 2020

Вы хотите MultiValuesDict.getlist() и __in поиск .

def search(request):
    qs = Product.objects.order_by('-created')

    manufactures = request.GET.getlist("manufacture", None)
    if manufactures:
        qs = qs.filter(brand__in=manufactures)

    context= {
       'products': qs,
    }
   return render (request, 'cart_2/search.html', context)

Кроме того (независимо от того, но) вы, безусловно, хотите, чтобы ваши бренды представляли собой отдельную модель (с FK от продукта к бренду) - это довольно базовая c нормализация реляционной модели, и есть очень хорошие причины для этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...