基于查询字符串的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模型过滤器[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Django中模型

Django,如何使用过滤器检查字符串字段是不是是参数的子字符串?

在 Django 中通过字符串查找模型实例

django基础知识之模型查询:

Django使用字符串过滤模型以避免重复

有没有办法检查字符串是不是是 django 查询集的有效过滤器?