Поле Multiselect в Django

У меня есть модель продукта с полем multiselect в django с выбором. Таким образом, продавцы могут выбирать, для какой возрастной группы предназначен товар, а покупатели могут фильтровать товары по возрасту. Проблема в том, что если продавец выбирает две возрастные группы, для которых предназначен товар, например, ребенок и взрослый. В базе данных это обозначается как Age(Child, Adult). Тогда, если покупатель должен отфильтровать этот товар, используя только "ребенок" или "взрослый", товар не будет отображаться. Клиент выбирает оба варианта для отображения. Очевидно, что я не хочу, чтобы это произошло. Я хочу, чтобы клиент отфильтровывал товар либо по детскому, либо по взрослому, либо по обоим. Вот код:

{% for i in aging %}
    <li class="list-group-item">
    <input class="filter-checkbox" data-filter="age" value="{{ i.0 }}" type="checkbox" />&nbsp;
    {{ i.1 }}
    </li>
{% endfor %}
def filter_data(request):
  age_group = request.GET.getlist('age[]')
  products = Product.objects.all().order_by('-id').distinct()
  if len(age_group) > 0:
      products = products.filter(age=age_group).distinct()
  t = render_to_string('ajax/category-products.html', {'data': products})
  return JsonResponse({'data': t})
    $(".filter-checkbox").each(function(index,ele){
            var _filterVal=$(this).val();
            var _filterKey=$(this).data('filter');
            _filterObj[_filterKey]=Array.from(document.querySelectorAll('input[data-filter='+_filterKey+']:checked')).map(function(el){
                return el.value;
            });
        });
        // Run Ajax
        $.ajax({
            url:'/filter-data',
            data:_filterObj,
            dataType:'json',
            beforeSend:function(){
                $(".ajaxLoader").show();
            },
            success:function(res){
                console.log(res);
                $("#filteredProducts").html(res.data);
                $(".ajaxLoader").hide();
            }
        });

Пожалуйста, скажите мне, есть ли другой способ. Я занимаюсь этим уже несколько дней.

Вернуться на верх