我有一个django应用程序,它具有过滤器作为其功能之一。
过滤器值是通过一个复选框确定的,该复选框使用ajax发送到django后端,如下所示:
$('input.type-check').on('click', function(){
var a = $(this).prop('checked');
if(a == true){
elem.push($(this).attr('data-role'));
}else{
elem.splice($(this).attr('data-role'));
}
var cats = '';
$.each(elem, function(i){
cats += elem[i];
});
var xurl ='/filter?category='+cats;
$.ajax({
type: 'GET',
url: xurl,
success: function(data){
$('div.products').html(data);
}
})
});
所述/filter$' url is mapped to the
fitlered`视图是:
def filtered(request):
if 'category' in request.GET and request.GET['category']:
cat = request.GET['category']
ct = Product.objects.filter(category__in=cat)
diction = {'prods': ct}
return render(request, 'filter.html', diction)
当仅category
发送一个作为参数时,它起作用。但是,当我发送多个时,它没有任何结果。
例如:
filter?category=Dairy
将返回与该类别关联的产品。但是,filter?category=Dairy,Plastics
或filter?category=DairyPlastics
(来自上述Javascript代码段)未返回任何结果。
我已经尝试将category
内括号放在视图中,如下所示,[cat]
但这也无济于事。我应该怎么做才能使其返回结果?
问题是,您既没有指定分隔符来划分类别,也没有在视图中分离类别。
试试这个:
在JQuery中
var cats = elem.join(', ')
var xurl ='/filter?category='+cats;
并在视图中:
def filtered(request):
if request.GET.get('category'):
cat = request.GET.get'category')
cat_list = [c.strip() for c in cat.split(',')]
ct = Product.objects.filter(category__in=cat_list).distinct()
#You might need a distinct clause too, to remove duplicates
diction = {'prods': ct}
return render(request, 'filter.html', diction)
这将适用于单个类别v / sa类别列表
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句