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 [email protected].
For more options, visit https://groups.google.com/d/optout.