@frilix
Иногда "творю"

Проблемы с фильтром?

Добрый день! Пытаюсь реализовать фильтры, но почему-то не выходит. В файле  view у меня есть класс для отображение товаров:

class CategoryView(ListView):
    template_name = '__index.html'
    context_object_name = 'products'
    paginate_by = 20

    def get_queryset(self):
        queryset = Product.objects.filter(category__slug=self.kwargs.get('slug')).order_by('-created')

        request = self.request

        # Filter By Brand and Country
        if request.GET.get('country'):
            print(request.GET.get('country'))
            queryset.filter(brand__country__slug=request.GET.get('country'))

        if request.GET.get('brand'):
            print(request.GET.get('brand'))
            queryset.filter(brand__slug=request.GET.get('brand'))

        print(queryset[0].brand.slug)
        print(queryset[0].brand.country.slug)

        return queryset


В функции get_queryset я пытаюсь фильтровать по брендам и странам, но результат не такой как ожидаешь:

То есть где есть print выводится слудующее при запросе: /?brand=astra-gold&country=chehiya

chehiya
astra-gold
veneto
italiya


Очевидно, что chehiya не равно italiya также как и veneto не astra-gold, но вот почему фильтрует для меня загадка.

Буду признателен за помощь!
  • Вопрос задан
  • 133 просмотра
Решения вопроса 1
@immaculate
Программист-путешественник
Вместо
queryset.filter(brand__country__slug=request.GET.get('country'))


Надо писать:
queryset = queryset.filter(brand__country__slug=request.GET.get('country'))
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы