>
> Basically I have 5 fields (last_name, middle_name, first_name, 
> mother_full_name, father_full_name) in a table called names,
>
> When I search a keyword "john", I would like to search it on a whole 
> table. For example, is there any way to just do 
> db(db.names.contains("%john%")) and it gives a list of rows with a searched 
> keyword stored in it instead of doing this ==> 
> db((db.names.last_name.contains("%john%")&(db.names.first_name.contains("%john%")&(db.names.mother_full_name.contains("%john%")....))
>

db.names.contains(...) is not valid DAL code nor would it be able to 
produce valid SQL (i.e., you have to specify fields). So, you need 
something like your second example, but replace all the "&" operators with 
"|". Anyway, there is no need to do that, because the grid search already 
does exactly that, which is why all you have to do is disable the 
Javascript search widget (as described in the linked post) to get the 
behavior you want.

Alternatively, you can code your own search function:

def mysearch(sfields, keywords):
    keywords = keywords.strip()
    return reduce(lambda a, b: a | b, [field.contains(keywords) for field in 
db.names])

Then pass that as the "searchable" argument to the grid.

Anthony

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to