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

时间:2011-01-18 02:53:24

标签: django

我正在尝试使用

过滤查询集
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)

我该怎么做?

2 个答案:

答案 0 :(得分:127)

差不多......

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

要了解它在做什么,谷歌周围:) Understanding kwargs in Python

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

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

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

答案 1 :(得分:-1)

语法:

model_name.objects.filter(column_name='value')

示例:在我的场景中,我想从“学生”表中查找所有状态为已完成的记录。

Student.objects.filter(status="completed")