Фильтр результатов поиска на основе флажка Django
Попытка фильтрации товаров по брендам с использованием чекбоксов.
модели
class Product(models.Model):
"""
Containing the products, each product belong to
a category and each product have a feedback system
"""
category = models.ForeignKey(Category, related_name='products', on_delete=CASCADE)
name = models.CharField(max_length=55)
brand = models.CharField(max_length=55)
price = models.FloatField()
featured = models.BooleanField(default=False)
image = ResizedImageField(size=[460,460], quality=100, upload_to='products', default='None', blank=True, null=True)
slug = models.SlugField(max_length=400, unique=True, blank=True)
description = models.TextField(default='product', blank=True)
def __str__(self):
return self.name
просмотров
def products(request, slug):
"""
List all products of a category
"""
category = get_object_or_404(Category, slug=slug)
products = Product.objects.filter(category=category)
brands = Product.objects.filter(category=category).distinct('brand')
# query brands and products when pressed
list = request.GET.get('list', 'brands') == 'on'
if list:
products = Product.objects.filter(category=category).filter(Q(name__icontains=list) | Q(brand__icontains=list) | Q(description__icontains=list))
brands = Product.objects.filter(category=category).filter(Q(name__icontains=list) | Q(brand__icontains=list) | Q(description__icontains=list)).distinct('brand')
context = {
'products': products,
'category': category,
'brands': brands,
'title': Product,
}
return render(request, 'products/products.html', context)
html
<div class="filter-content collapse show flex-wrap" id="collapse_2" style="">
{% for brand in brands.all %}
<div class="card-body" id="tabl">
<label class="form-check" onChange="window.location.href=this.value">
<input class="form-check-input" type="checkbox" value="?list=brands" name="brands[]" id="brands{{ brand.id }}">
<span class="form-check-label">{{ brand.brand }}</span>
</label>
</div>
{% endfor %}
</div>
При нажатии на флажок, основываясь на brand.id данного флажка, он должен изменить запрос на основе товаров этого бренда, однако сейчас он возвращает 404 страницу not found. Что я здесь упускаю?