Have you tried this:

db.define_table('dog', 
Field('name','string'),Field('owner',db.owner,default=db(db.owner.isdefault=True).select().first()))


On Thursday, June 7, 2012 2:20:30 PM UTC-7, Vincent wrote:
>
> Hi,
>
> I'm looking for a way to define a default foreign key dynamically.
>
> For example if I have the following schema:
>
> db.define_table('owner',Field('name', 'string'), 
> Field('isdefault','boolean',default=False))
> db.people.insert('name'='Bill')
> db.people.insert('name'='unknown',isdefault=True)
> db.define_table('dog', 
> Field('name','string'),Field('owner',db.owner,default=????))
> db.dog.insert(name='Fido',owner=1)
> db.dog.insert(name='mutt') # hopefully points to "unknown" in owner table
>
> Is there a way I could dynamically check the "owner" table and return the 
> id of the first row where isdefault==True whenever I define a new "dog" 
> without an owner?
> In the example above the "mutt" row should have owner==2 ("unknown" in the 
> owner table).
>
> Trying to put a function as the default argument does not work. I realize 
> I could set the owner to always be the first row in the table but I would 
> like something more robust and flexible.
>
> Thanks
> Vincent
>
>

Reply via email to