Django 模型基于查询字符串进行过滤
Django Model filters on the basis of query string
我想过滤查询并根据我的查询字符串创建过滤器。
例如:
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 万条记录。
可以这样做:
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]})
该构造的效率仅取决于您的数据库结构,取决于您在数据库中拥有的索引。因为 django 在 return 之前不执行查询。它构造一个 SQL 查询作为结果。
你可以像这样使用 django 的 ORM:
if request.GET.get('category'):
category = request.GET.get('category')
filtered_result = Product.objects.filter(category=category)
我想过滤查询并根据我的查询字符串创建过滤器。
例如:
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 万条记录。
可以这样做:
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]})
该构造的效率仅取决于您的数据库结构,取决于您在数据库中拥有的索引。因为 django 在 return 之前不执行查询。它构造一个 SQL 查询作为结果。
你可以像这样使用 django 的 ORM:
if request.GET.get('category'):
category = request.GET.get('category')
filtered_result = Product.objects.filter(category=category)