我想过滤查询,我想根据查询字符串创建过滤器。
例如:
if request.GET.get('color'):
#filter result set on the basis of color
if request.GET.get('price'):
#filter result set on the basis of specified price
if request.GET.get('category'):
#filter result set on the basis category
我们怎样才能在django中有效地做到这一点。我的数据库中有超过200万条记录。
答案 0 :(得分:2)
可以这样做:
products = Product.objects.all()
for filter_field in ('color', 'price', 'category'):
if request.GET.get(filter_field):
products = products.filter(**{filter_field: request.GET[filter_field]})
该构造的效率仅取决于您的数据库结构,以及您在DB中的索引。因为django在返回之前不会执行查询。它构造了一个SQL查询作为结果。
答案 1 :(得分:0)
您可以像这样使用django&#ORM:
if request.GET.get('category'):
category = request.GET.get('category')
filtered_result = Product.objects.filter(category=category)