I have the same problème and in that poste :
https://groups.google.com/forum/?fromgroups#!topic/web2py/RmdCe7xp5gM[1-25]
it say that it's possible to do so but in my test application it's not.
As you say on insertion the id is not avaaillable yet and that is the
raison I think.
If somme body have a solution, please give as a sample of code.
On Monday, August 6, 2012 12:14:52 AM UTC, Rob_McC wrote:
>
>
> . I created a simple app, with only this in it,
> . I can get computed field to work , but never referencing the id field.
>
> I think the trouble is that 'id' is never updated, so it is not available
> for compute= .
> I don't think I can do this when the record is first created, since an
> 'id' has not been assigned.
>
> I want to eventually add another field that depends on 'id' that is why
> I'm doing this.
>
> I could use a virtual field I think...
>
> Thanks
> Rob
>
>
>
>
>
> ## after auth = Auth(db)
> auth.settings.extra_fields['auth_user']= [
> Field('address'),
> Field('city'),
> Field('zip'),
> Field('phone'),
> Field('ref_number', compute=lambda r: r['city'])]
>
>
> # this WORKS
> # Field('ref_number', compute=lambda r: r['city'])]
>
>
> # this DOES NOT WORK
> # Field('ref_number', compute=lambda r: r['id'])]
> # Field('ref_number', 'integer', compute=lambda r: r['id'])]
>
>
> # before auth.define_tables(username=True)
>
>
> ## create all tables needed by auth if not custom tables
> auth.define_tables()
>
>
--