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

Reply via email to