I wanted to learn more about lazy virtual fields and therefore I have repeated the example from the book:
def vfields(): db.define_table('item', Field('unit_price','double'), Field('quantity','integer')) db(db.item.id>0).delete() class MyVirtualFields: def lazy_total_price(self): return lambda self=self: self.item.unit_price*self.item.quantity db.item.virtualfields.append (MyVirtualFields()) db.item.bulk_insert([{'unit_price':12.00, 'quantity': 15}, {'unit_price':10.00, 'quantity': 99}, {'unit_price':120.00, 'quantity': 2},]) res = [] for r in db(db.item.id>0).select(): res.append([r.unit_price, r.quantity, r.lazy_total_price()]) return dict(res=res) The expected output is: [[12.0, 15, 180.0], [10.0, 99, 990.0], [120.0, 2, 240.0]] But I got * [[12.0, 15, *240.0]*, [10.0, 99, *240.0*], [120.0, 2, 240.0]]* * * *Three times the same result. * I have read the book and my program over and over again - but I cannot see any error.* * Does somebody have an idea? Martin