On Sunday, March 11, 2012 4:07:46 AM UTC-4, Annet wrote:
>
> In db.py I have: 
>
> db.define_table('Node', 
>     Field('createdOn',type='datetime',writable=False,readable=False), 
>     Field('modifiedOn',type='datetime',writable= 
> False,readable=False), 
>     migrate=False) 
>
> db.define_table('Organization', 
>   
> Field('nodeID',db.Node,default='',notnull=True,ondelete='RESTRICT',writable=False,readable=False),
>  
>
>     Field('name',length=128,default='',notnull=True), 
>     ... 
>     migrate=False) 
>
> db.define_table('NodeRelatedCard', 
>   
> Field('sourceID',db.Node,default='',notnull=True,ondelete='CASCADE',writable=False,readable=False),
>  
>
>   
> Field('targetID',db.Node,default='',notnull=True,ondelete='CASCADE'), 
>     ... 
>     migrate=False) 
>
> In a function I have: 
>
> row=db(db.NodeRelatedCard.id==request.args(1)).select().first() 
>
> In the update form of this function I would like targetID to be 
> represented by Organization.name. I tried: 
>
> db.NodeRelatedCard.targetID.represent= lambda targetID, row: 
> db.Organization(targetID).name 
>
 
db.Organization(targetID) is equivalent to db(db.Organization.id == 
targetID).select().first(), but you want to equate targetID 
with Organization.nodeID, not with Organization.id, so instead do:

db.NodeRelatedCard.targetID.represent = lambda targetID, row:
    db(db.Organization.nodeID == targetID).select().first().name

Anthony



> but that doesn't work. What is the correct syntax to get this to work. 
>
>
> Kind regards, 
>
> Annet.

Reply via email to