db(db.owner.isdefault=True).select()
should be db(db.owner.isdefault==True).select() On Thursday, 7 June 2012 16:48:57 UTC-5, Vincent wrote: > > Thanks for the suggestion. > It returns the following error: > SyntaxError: keyword can't be an expression > > On Thursday, June 7, 2012 4:26:03 PM UTC-5, Derek wrote: >> >> 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 >>> >>>