The SQLFORM expect to receive, an table, not a query.. What's the name of your table? just put the name of the table on the first argumment, and filter with 'fields' the fields you want to show.
Just change: grid=SQLFORM.grid(db.item.id>0, fields=[db.item.unit_price, db.item.total_price ] ) To: grid=SQLFORM.grid(db.Y <http://db.item.id/>OUR_TABLE, fields=[db.item.unit_price, db.item.total_price ] ) 2016-12-29 11:19 GMT-02:00 Jurgis Pralgauskis <[email protected]> : > Hi, > > I try to use virtual fields as in example > http://web2py.com/books/default/chapter/29/06/the- > database-abstraction-layer?search=virtual#New-style-virtual-fields > > > db.item.total_price = Field.Virtual('total_price', > lambda row: row.item.unit_price * > row.item.quantity) > > But how can I list virtual field in grid fields? > > grid=SQLFORM.grid(db.item.id>0, fields=[db.item.unit_price, > db.item.total_price ] ) > > gives error > > web2py™ Version 2.14.6-stable+timestamp.2016.05.10.00.21.47 Traceback > > Traceback (most recent call last): > File "/home/jurgis/dev/web2py_src/gluon/restricted.py", line 227, in > restricted > exec ccode in environment > File > "/home/jurgis/dev/web2py_src/applications/app/controllers/plugin_search_form.py" > > <http://localhost:8001/admin/default/edit/app/controllers/plugin_search_form.py>, > line 247, in <module> > File "/home/jurgis/dev/web2py_src/gluon/globals.py", line 417, in <lambda> > self._caller = lambda f: f() > File > "/home/jurgis/dev/web2py_src/applications/app/controllers/plugin_search_form.py" > > <http://localhost:8001/admin/default/edit/app/controllers/plugin_search_form.py>, > line 50, in test_virtual_field > grid=SQLFORM.grid(db.item.id>0, fields=[db.item.unit_price, > db.item.total_price ] ) > File "/home/jurgis/dev/web2py_src/gluon/sqlhtml.py", line 2758, in grid > value = row[str(field)] > File "/home/jurgis/dev/web2py_src/gluon/packages/dal/pydal/objects.py", > line 76, in __getitem__ > raise KeyError > KeyError > > > > > ps.: listing all fields would work, but I don't need all : > grid=SQLFORM.grid(db.item.id>0 ) > > or should I use readable = False for the ones I want to hide? > > -- > Jurgis Pralgauskis > tel: 8-616 77613; > Don't worry, be happy and make things better ;) > http://galvosukykla.lt > > -- > 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. > -- 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.

