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