Any comments?
On Nov 25, 10:49 am, Adi <[email protected]> wrote: > Hi all, > > I spent hours yesterday trying to implement virtual fields correctly > following the book, and based on that I found some behaviour which > could be better explained. > > Reference:http://web2py.com/book/default/chapter/06#Virtual-Fields > web2py version: 1.88.2 > > 1. Selecting a virtual field like a normal field in select() part of > the query will throw a KeyError. However, the virtual field is still > getting selected. > > 2. This part: > > class MyVirtualFields(object): > ... > db.mytable.virtualfields.append(MyVirtualFields()) > > should come before the db.select for the virtual fields to be > selected. The model is a good place for this part of the code. This is > in slight contrast to the second code example where > rows.setvirtualfields(...) is called after the rows are selected. The > difference is slightly confusing. > > 3. Using the lazy loading techniques makes it impossible to select the > virtual fields directly in a query. You will need to iterate through > the selected rows and explicitly extract the > row.mytable.myvirtualfield() as shown in example. The need to loop > through the rows again (against using the rows directly in say, an > SQLTable) may not really be desirable in a web2py app situation, and > should not be considered the general use case. > > Please correct me if anything here is wrong. The point is that I spent > a lot of time and trial-error methods to figure this out, which we can > avoid for other people if we explain this part better in the book.

