def category_filter(request, slug): c = get_common_context(request) if 'category' in request.POST: slug = request.POST['category'] if slug: c['category'] = Category.get_by_slug(slug) items = Item.objects.filter(category__in=c['category'].get_descendants(include_self=True)) for k in request.POST.keys(): if k.startswith('parametr_'): p_id = k[9:] p_value = request.POST[k] if p_id == 'price_from' and p_value: items = items.filter(price__gte=float(p_value)) c['price_from'] = int(p_value) elif p_id == 'price_to' and p_value: items = items.filter(price__lte=float(p_value)) c['price_to'] = int(p_value) else: items = Item.filter_by_parametr(items, p_id, p_value) else: items = Item.objects.all() if 'q' in request.POST: items = items.filter(name__icontains=request.POST['q']) c['items'] = items return render_to_response('catalog.html', c, context_instance=RequestContext(request))