基于查询字符串的Django模型过滤器[关闭]
Posted
技术标签:
【中文标题】基于查询字符串的Django模型过滤器[关闭]【英文标题】:Django Model filters on the basis of query string [closed] 【发布时间】:2015-04-01 04:08:23 【问题描述】:我想过滤查询,我想根据我的查询字符串创建过滤器。
例如:
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 万条记录。
【问题讨论】:
您需要使用github.com/alex/django-filter。 谢谢..我会检查这个 【参考方案1】:可以这样做:
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 在返回之前不执行查询。它构造一个 SQL 查询作为结果。
【讨论】:
【参考方案2】:你可以像这样使用 django 的 ORM:
if request.GET.get('category'):
category = request.GET.get('category')
filtered_result = Product.objects.filter(category=category)
【讨论】:
以上是关于基于查询字符串的Django模型过滤器[关闭]的主要内容,如果未能解决你的问题,请参考以下文章