我正在try 使用以下工具过滤查询集

info=members.filter(name__contains=search_string)

我的问题是,我不知道用户希望提前搜索哪个字段,所以我需要用变量替换"name",如中所示

variable_column = 'name'
search_type = 'contains'
filter = variable_column + '__' + search_type
info=members.filter(filter=search_string)

我该怎么做?

富有的

推荐答案

快到了..

members.filter(**{'string__contains': 'search_string'})

要了解它在做什么,请在谷歌上搜索:)

**将字典键/值对扩展为关键字参数-值对.

要使您的示例适应解决方案,请执行以下操作:

variable_column = 'name'
search_type = 'contains'
filter = variable_column + '__' + search_type
info=members.filter(**{ filter: search_string })

Django相关问答推荐

测试DRF中需要授权头

未显示SWAGER上的一些示例架构

AttributeError:';ManyToOneRel&39;对象没有属性';attname';

在模板中自动添加变量

Django:添加第二个';详细';用于检索额外信息的视图

如何将数据(具体归档)从views.py 传递到models.py

基于每个条目的 Django Queryset 过滤

Django Query 在基于通用类的 UpdateView 中重复了 2 次

带有代码完成功能的 python / django 的 Sublime Text 2 和 3 设置

Django 模型命名约定

Django PositiveIntegerField 中的 0 值?

更好的 ArrayField 管理小部件?

Django 相当于 COUNT 和 GROUP BY

在 Django 的 ORM 中访问存储过程的最佳方法是什么

Django删除查询集的最后五个以外的所有内容

如何获取 Django 模型来自的应用程序?

virtualenv(python3.4), pip install mysqlclient 错误

Django:访问给定字段的 Select 元组

has_object_permission 和 has_permission 有什么区别?

如何使 Django 表单字段仅包含字母数字字符