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.