on_define was specifically created to keep lazy tables lazy. If lazy tables 
did not exist, on_define would have been useless.

Historically, large pieces of examples relied on something like
db.define_table('b', Field('c'))

db.b.c.default = 'me'
db.b.c.requires = IS_IN_SET(('me', 'you'))

I guess it was for cleanliness in reading.... I never liked it. 
That being said, lots of web2py users started copy/pasting ..... and then 
found out that, with lazy_tables enabled, basically this method of coding 
meant that you couldn't have "b" lazy because calling db.b.c effectively 
istantiate the table (even if you don't use it later in the controllers)

ATM, what I'm using on_define for is only database callbacks.



On Wednesday, July 23, 2014 6:57:18 AM UTC+2, Tim Richardson wrote:
>
> I believe that on_define is always done at table instantiation, so for non 
> lazy tables it's done when the request is executed as part of setting up 
> the table. so lazy_tables is not mandatory.
>
>
> On Wed, Jul 23, 2014 at 2:37 PM, 黄祥 <steve.van...@gmail.com <javascript:>> 
> wrote:
>
>>  db = DAL(lazy_tables=True) 
>>>
>>>
>> not sure, if lazy_tables = True is mandatory or not, another example for 
>> on_define :
>> e.g.
>> def on_define_bank(table): 
>>     # default
>>     table.name.default = ''
>>     table.age.default = 30
>>     # label
>>     table.name.label = T('Name')
>>     table.age.label = T('Age')
>>     # notnull
>>     table.name.notnull = True
>>     table.age.notnull = True
>>     # required
>>     table.name.required = True
>>     table.age.required = True
>>     # requires
>>     table.name.requires = IS_NOT_EMPTY()
>>     table.age.requires = IS_INT_IN_RANGE(0, 120)
>>
>> db.define_table('person', 
>>     Field('name'), 
>>     Field('age', 'integer'), 
>>     on_define = on_define_bank)
>>
>> best regards,
>> stifan
>>
>> -- 
>> 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 a topic in the 
>> Google Groups "web2py-users" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/web2py/t5XrUYK3WDg/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> web2py+un...@googlegroups.com <javascript:>.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>
>
> -- 
>
>  
>
> *Tim Richardson, Director* 
> GrowthPath, Data-driven profit growth
>
> Mobile: +61 423 091 732 
> Office: +61 3 8678 1850
> I tweet useful business & IT tips at growthpath_au
>
> GrowthPath Pty Ltd 
> ABN 76 133 733 963 
>
>
>  
>
> <http://www.growthpath.com.au/>
>  

-- 
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.

Reply via email to