Множественные GET-запросы Django

Учусь Django, создавая интернет-магазин. Столкнулся с проблемой обработки множественных запросов. В общем нужно оформить несколько запросов. Вот код, после него поясню, что да как.

class Shop(ListView):
    model = Product
    template_name = 'app/shop.html'
    context_object_name = 'shop'
    paginate_by = 9

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['price'] = set((x for x in Product.objects.values_list('price', flat=True)))
        return context

    def get_queryset(self):
        if self.request.GET.get('find'):
            return Product.objects.filter(draft=False, name__icontains=self.request.GET.get('find'))
        else:
            return Product.objects.filter(draft=False)

В данном коде я в тупую прописал метод общего поиска товаров в функции get_queryset. Конечно, я могу начать писать IF'ами, но это же бред. Таким способом можно, конечно, если упороться, но тогда будет поиск только по одному запросу. Все остальные запросы уже будут проигнорированы. А мне нужно одновременно выбрать, например, и цвет, и размер (например ./?color=red&size=XL). Или же, так как у меня поиск по __icontains, написать в поле поиска "футболка", чтобы появились все товары, содержащие это слово, и далее выбрать бренд, цвет, размер. В итоге должно получиться ./?find=футболка&brand=adik&color=black&size=XL. Еще, желательно, сделать такие запросы, которые содержат несколько параметров. Например: ./?find=футболка&brand=adik,puma&color=black&size=XL&price=5000-10000,10001-15000. Надеюсь на помощь, ибо не смог найти инфу ни у нас, ни в англоязычном Интернете.

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