The following code uses: 1) a computed field 2) a self reference 3) a virtual field
>>> db.define_table('a',Field('x'),Field('y','reference >>> a'),Field('z',compute=lambda row: row['x']*3)) >>> class A: >>> def t(self): return len(self.a.z) >>> db.a.virtualfields.append(A()) >>> r=db.a.insert(x='hello') >>> r.update_record(x=r.x,y=r) >>> print a.y.y.y.y.t 15 Can you explain how it works?