2016-03-03 67 views
0

我试图在ListView上做一个价格过滤器。在jquery ui滑块中停止事件时,过滤器将作为ajax滑块传递。为了使结果重写get_queryset()函数。奇怪的是get_queryset()不会在ajax请求后给出新的结果,即使get_queryset()中的IF语句执行,因为我可以在控制台中打印价格变量。我究竟做错了什么 ? :SDjango的JQuery UI滑块通过Ajax过滤

AJAX请求仍然给出的产品为Product.objects.all()结果,而不是Product.objects.filter(价格= 0)

伊夫还试图把所属类别成get_context_data()作为上下文['procuct_list'],因此它会覆盖get_queryset()的结果,但它不起作用

!UPDATE! 该网址似乎过滤时,我通过地址栏发送获取请求,但它只是不通过ajax调用?

它似乎不工作只是与Ajax为什么?

类ShopView

class ShopView(ListView): 
    model = Product 
    template_name = "shop/shop.html" 
    context_object_name = "product_list" 

def get_context_data(self, **kwargs): 
    context = super(ShopView, self).get_context_data(**kwargs) 
    context['category_list'] = Category.objects.all() 
    return context 

def get_queryset(self): 
    price = self.request.GET.get('price') 
    if price: 
     print price #This gets printed 
     return Product.objects.filter(price=0) #But this fails!? 
    else: 
     return Product.objects.all() 

了jQuery UI滑块

$(function() { 
    var priceSlider = ".price-slider"; 
    var priceMin = "span.min-price"; 
    var priceMax = "span.max-price"; 
    $(priceSlider).slider({ 
     range: "min", 
     value:5, 
     min: 1, 
     max: 5, 
     slide: function(event, ui) { 
      $(priceMax).html(ui.value + "€"); 
     }, 
     stop: function(event, ui) { 
      var price = ui.value; 
      $.ajax({ 
       type: "GET", 
       data: "price=" + price, 
       cache: false, 
      }); 
     } 
    }); 

的为周期进行渲染产品

{% for product in product_list %} 
    {% include "shop/product.html" %} 
{% endfor %} 

产品本身的HTML

<div class="product-price"> 
    <p>{{ product.price }}€</p> 
</div> 
...etc 

回答

0

没关系,愚蠢的错误,我以后没有做任何与AJAX请求。

success: function(data) { 
    $("body").html(data); 
}