I think I got it, but I don't understand the solution. If I understand
correctly, since the model is run before the controller, default is set to
None. But why does lambda solve this?

Sent from my phone

On 18 בינו 2012, at 23:39, Anthony <[email protected]> wrote:

At the time you assign the default value, session.table_token is None, so
that is the default value. Instead, you can either assign the default value
after you create the session.table_token, or use a lambda:

db._common_fields.append(Field('request_tenant', default=lambda:
session.table_token))

Anthony

On Wednesday, January 18, 2012 3:17:55 PM UTC-5, tsvim wrote:
>
> Hi all,
>
> I get the following weird behavior. I defined a common_fields, being
> request_tenant as such:
>
>
> db._common_fields.append(Field('request_tenant',default=session.table_token,writable=False))
>
> session.table_token is a uuid generated by  the controller.
> There I have the following code:
>
> session.table_token = generate_table_token()
>
> if db(db.table).isempty():
>    field_name = 'MyField'
>    db.table.insert(name=field_name)
>    populate(db.table2,100)
>
> But for some reason it won't take the default value for request_tenant the
> first time. When I reload the page it creates new entriees with the session
> variable correct this time.
>
> I suppose session.table_token does not get evaluated when I first generate
> it, so how can I get the requested behavior? (Both with populate and insert)
>
> Thanks a million for your help,
>
> Tsvi
>

Reply via email to