首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >模型中的Django过滤: Model.objects.filter(Q())

模型中的Django过滤: Model.objects.filter(Q())
EN

Stack Overflow用户
提问于 2015-12-06 15:38:46
回答 1查看 1.3K关注 0票数 3

我需要使用django ORM在数据库中搜索一些数据,这应该是按所有列搜索的。问题是,在作为参数进入函数之前,我不知道要搜索什么。

源代码如下:

代码语言:javascript
复制
search = request.GET.get('search_value')
#row_to_search is turple i get to function
#it could be different at every searching
#it looks like here:
rows_to_search = ('name', 'age', 'salary')

我需要在我的数据库中搜索这些行,如下所示:

代码语言:javascript
复制
query = Mymodel.objects.filter(Q(name__iregex=search) |      \
                               Q(age__iregex=search)  |      \
                               Q(salary__iregex=search))

如果我要搜索更多的行,该如何编写代码?

我尝试过这样的方法,但它看起来根本不起作用:

代码语言:javascript
复制
Q_filter = map(lambda q: 'Q('+q+')', map(lambda s: s+'__regex='+search, rows_to_search))
searchline = '|'.join(Q_filter)

我不能调用model.objects.filter(searchline),因为它是一个字符串。有没有可能在这里做些什么,或者是架构错误?我应该创建一个自定义的模型管理器吗?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34115148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档