Hi Anthony,
In db.py I defined these tables:
db.define_table('Organization',
Field('nodeID',db.Node,default='',notnull=True,ondelete='CASCADE',writable=False,readable=False),
Field('name',length=128,default='',notnull=True),
...,
migrate=False)
db.define_table('Address',
Field('nodeID',db.Node,default='',notnull=True,ondelete='CASCADE',writable=False,readable=False),
...,
migrate=False)
db.Address.nodeID.requires=[IS_IN_DB(db,'Node.id','%(id)s',zero='select a
value'),IS_NOT_IN_DB(db(db.Address.addrType==request.vars.addrType),db.Address.nodeID,error_message='combination
node and addr type already in database')]
db.Address.nodeID.represent=lambda nodeID, row:
db(db.Organization.nodeID==nodeID).select().first().name
In case of this URL:
http://127.0.0.1:8000/init/appadmin/select/db?query=db.Address.id%3E0
Address.nodeID is represented by Organization.name.
In case of this URL: http://127.0.0.1:8000/init/appadmin/update/db/Address/1
Address.nodeID is 1.
I also have custom registration process, in the function in which I add the
user I have the following lines of code:
@auth.requires(lambda: auth.has_membership(ADMIN))
def adduser():
....
row=db(db.Register.id==request.args(0)).select(db.Register.ALL).first()
organization=db(db.Organization.cocNumber==row.cocNumber).select(db.Organization.ALL).first()
id=organization.nodeID
db.auth_user.nodeID.represent=lambda nodeID,row: organization.name
form=SQLFORM.factory(db.auth_user,ignore_rw=True,separator='')
...
form.vars.nodeID=id
if form.process().accepted:
...
elif form.errors:
...
else:
...
return dict(form=form)
and in the view {{=form}}
In this case I experience the same problem nodeID is 1 instead of
Organization.name
I hope I provided sufficient information.
Kind regards,
Annet