Фильтровать товары по категории в Django - PullRequest
1 голос
/ 26 мая 2020

У меня есть список фильтров на моей домашней странице:

<!-- ? Filter -->
<div class="filter border-top border-bottom row">
    <a href="#">
        <img src="{% static 'store/images/bottoms.png' %}" alt="">
    </a>
    <a href="#">
        <img src="{% static 'store/images/outerwear.png' %}" alt="">
    </a>
    <a href="#">
        <img src="{% static 'store/images/tshirt.png' %}" alt="">
    </a>
    <a href="#">
        <img src="{% static 'store/images/shoes.png' %}" alt="">
    </a>
    <a href="#">
        <img src="{% static 'store/images/skateboard.png' %}" alt="">
    </a>

и я пытаюсь отфильтровать что-то вроде этого:

class ProductListView(ListView):
    model = Product
    template_name = "store/home.html"

    def get_queryset(self):
        catagory = catagory.objects.filter(catagory)

Могу ли я передать название категории значка I щелкните вид, чтобы отфильтровать его? А также могу ли я передать фильтр обратно на мою домашнюю страницу (на которой уже перечислены все продукты)?

Это мой домашний вид:

class ProductListView(ListView):
    model = Product
    template_name = "store/home.html"
    context_object_name='products'
    ordering = ['-date_posted']

Было бы проще добавить набор запросов в это и установить фильтр по умолчанию? Любая помощь приветствуется, спасибо.

1 Ответ

1 голос
/ 26 мая 2020

Ваши ссылки должны выглядеть примерно так:

<a href="{% url product_filter filter=bottoms %}">
    <img src="{% static 'store/images/bottoms.png' %}" alt="">
</a>

# urls.py
path(r'product/<filter>/', ProductListView.as_view(), name='product_filter')),

Тогда вам просто нужно будет поймать параметр в представлении и отфильтровать список по нему.


Изменить: добавление ответа и кода из вопроса в комментарии для лучшего форматирования.

class ProductListView(ListView): 
    model = Product 
    template_name = "store/filter.html" 
    context_object_name='products' 
    ordering = ['-date_posted'] 

    def get_queryset(self): 
        return Product.objects.filter(catagory__name=self.kwargs['filter']))
...