我需要使用Django ORM在数据库中搜索一些数据,它应该通过所有列进行搜索。问题是,在将函数作为参数传入之前,我不知道要搜索什么。
以下是源代码:
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')
我需要在数据库中搜索那些行,类似这样:
query = Mymodel.objects.filter(Q(name__iregex=search) | \
Q(age__iregex=search) | \
Q(salary__iregex=search))
如果我需要搜索更多的行,该如何编写代码?
我尝试了以下代码,但似乎根本没有起作用:
Q_filter = map(lambda q: 'Q('+q+')', map(lambda s: s+'__regex='+search, rows_to_search))
searchline = '|'.join(Q_filter)
我不能调用 model.objects.filter(searchline)
,因为它是一个字符串。
在这里有什么办法吗?或者架构错了吗?我应该创建一个自定义的模型管理器吗?