一尘不染

带有可变列的Django查询过滤器

django

我正在尝试使用过滤查询集

info=members.filter(name__contains=search_string)

我的问题是我不知道用户想提前搜索哪个字段,因此我需要用一个变量替换“名称”,如下所示

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

我怎么做?


阅读 297

收藏
2020-03-29

共1个答案

一尘不染

差不多了..

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

要了解它在做什么,请在Google周围搜索 :)了解Python中的kwargs

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

使你的示例适应解决方案:

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