On Tuesday, October 25, 2011 11:45:41 AM UTC-4, Archibald Linx wrote:
>
> Thank you Anthony. 
>
> All this works very nicely. 
> Maybe the default format for auth_user should also be documented. 
>
> Let's say I have the following table : 
> db.define_table('message', 
>     Field('to', 'list:reference auth_user'), 
>     Field('status', 'list:integer')) 
>
> I want "status" to be a list of 0 as long as "to", but 
> "db.message.status.default = [0]*len(db.message.to.default)" does not 
> work.
>

db.message.to.default represents the default value for the 'to' field (which 
you have not set), not the actually values being inserted. Anyway, I don't 
think the default for one field can reference the values of another.

There are a few other options. You could use a computed field (though by 
default that won't display in a form, if you need that). If inserts/updates 
will always be handled via form submissions, you could us a form 
onvalidation function or a custom validator. You could also just do 
default=[0]*len(request.vars.to), since upon form submission, the values 
submitted to the 'to' field will be stored in request.vars.to (note, the 
values stored in request.vars will be the unvalidated values). See here for 
more 
details: 
http://stackoverflow.com/questions/7325776/using-a-lambda-for-a-model-default-in-web2py/7328407#7328407

Anthony

Reply via email to