Instead of the field representation, the row attribute returns the
stored value of the record, as expected.
Probably you can call the field represent functions for the required
behavior if you are not using sqltable

<td>db.Edge.byNodeID.represent(row.byNodeID, row)</td>
<td>db.Edge.ofNodeID.represent(row.ofNodeID, row)</td>

On 18 mar, 03:36, Annet <[email protected]> wrote:
> The table in db.py
>
> db.define_table('Edge',
>
> Field('hubID',db.Hub,default='',notnull=True,ondelete='CASCADE',writable=False,readable=False),
>
> Field('byNodeID',db.Node,default='',notnull=True,ondelete='RESTRICT'),
>
> Field('ofNodeID',db.Node,default='',notnull=True,ondelete='CASCADE'),
>    ...
>     migrate=False)
>
> db.Edge.hubID.represent=lambda hubID, row:
> db(db.Hub.id==hubID).select().first().name
> db.Edge.byNodeID.represent=lambda byNodeID,
> row:db(db.Organization.nodeID==byNodeID).select().first().name
> db.Edge.ofNodeID.represent=lambda ofNodeID, row:
> db(db.Organization.nodeID==ofNodeID).select().first().name
>
> The function:
>
> @auth.requires(auth.has_membership(HUB) or auth.has_membership(ADMIN))
> def edge():
>     form=rows=rowcount=[]
>
> rows=rows=db(db.HubEdge.hubID==session.hubadminID).select(db.HubEdge.ALL)
>     return dict(rows=rows)
>
> When in the view I simply do:
>
> {{=rows}}
>
> The name of the Organization is being displayed. When I do:
>
> {{for row in rows:}}
>   <tr>
>     <td>{{=row.byNodeID}}</td>
>     <td>{{=row.ofNodeID}}</td>
>   </tr>
> {{pass}}
>
> ... the byNodeID and ofNodeID are being displayed. I guess there is
> something wrong syntactically?
>
> Kind regards,
>
> Annet

Reply via email to