See http://web2py.com/books/default/chapter/29/06/the-database-abstraction-layer#on_define.
On Thursday, March 17, 2016 at 6:13:35 PM UTC-4, Lisandro wrote: > > I will bother with one last related question: *what about callback > triggers?* > I'm defining them like this: > > db.define_table('mytable', Field('field1'), Field('field2')) # defines > the table > from myglobals import myfunction # imports global function > db.mytable._after_update.append(lambda s, r: myfunction(s, r)) # defines > after update callback trigger > > In this case, I guess lazy_tables=True wouldn't make sense, because I'm > calling db.mytable so it triggers the definition of the table. > > Is there a way of specifying callback triggers directly when calling > define_table? > > > > > El jueves, 17 de marzo de 2016, 15:27:22 (UTC-3), Lisandro escribió: >> >> Oh I see! So I can define the virtual/method fields that way, and then it >> does make sense to keep using lazy_tables. Completely missed that point. >> >> Thank you very much! >> As always, web2py's community rocks. >> >> >> >> El jueves, 17 de marzo de 2016, 14:59:35 (UTC-3), Anthony escribió: >>> >>> On Thursday, March 17, 2016 at 1:53:43 PM UTC-4, Lisandro wrote: >>>> >>>> Thank you very much for the quick answer. >>>> >>>> Your first comment made me think about the "lazy_tables" with the >>>> definition of virtual method fields. >>>> If you say that doing db.tablename the table is no longer lazy, *then >>>> it wouldn't make sense to use lazy_tables in a particular case where >>>> almost >>>> each table has a virtual method field, am I right?* >>>> >>>> I mean, for example, if this is my model: >>>> >>>> db.define_table('first_table', Field('field1'), Field('field2')) >>>> >>>> db.first_table.field3 = Field.Method(lambda row: 'value for field3') >>>> >>> >>> This won't help with db.auth_user, which is defined automatically >>> (though you can define it manually yourself if preferred), but you can >>> simply do: >>> >>> db.define_table('first_table', >>> Field('field1'), >>> Field('field2'), >>> Field.Method('Field3', lambda row: 'value for field3')) >>> >>> Note, the first argument of Field.Method() and Field.Virtual() should >>> always be the field name anyway, even if you are defining them like this: >>> >>> db.mytable.myfield = Field.Method('myfield', ...) >>> >>> There are particular cases where leaving the name out can lead to >>> problems. >>> >>> Anthony >>> >> -- 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 web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.