Maybe something like this: def query_fields(query): from gluon.dal import Query fields = [] for element in (query.first, query.second): if isinstance(element, Field): fields.append(element) elif isinstance(element, Query): fields.extend(query_fields(element)) return fields
The above will return a list of field objects. You could instead have it return a list of field names (either using field.name, which returns only the field name, or using str(field), which returns 'tablename.fieldname' format), or directly check for the existence of a particular field. Note, when checking for a field match, don't do something like: db.mytable.myfield in list_of_field_objects or: any(db.mytable.myfield == field for field in list_of_field_objects) In both cases, the comparison operator will result in a Query object (because of the ==), which will always yield True. Instead, use "is" or compare the field names/string representations: any(db.mytable.myfield is field for field in list_of_field_objects) or: any(str(db.mytable.myfield) == str(field) for field in list_of_field_objects ) Anthony On Thursday, December 11, 2014 9:51:44 AM UTC-5, Massimiliano wrote: > > Is there a way to know if a field is involved in a query inspecting the > query object? > > Thank you > -- > Massimiliano > -- 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.