I have a model where roads are the base table. In a one to many relation I
have intersection addresses and each address has many pieces of equipment.
Model looks like this
# Road table, some winding roads are both street and avenue
db.define_table('road',
Field('name', 'string', length=32, unique=True, required=True,
notnull=True, label='Road Name'),
Field('is_street', 'boolean', default=False),
Field('is_avenue', 'boolean', default=False),
format='%(name)s'
)
# Address table, the set_address_requirements allows lazy table definition
and
# makes sure 2 intersections are not entered through forms into the database
def set_address_requirements(address):
address.street_id.requires = IS_IN_DB(db(db.road.is_street == True),
'road.id', '%(name)s')
address.avenue_id.requires = IS_IN_DB(db(db.road.is_avenue == True),
'road.id', '%(name)s',
_and =
IS_NOT_IN_DB(db(db.address.street_id==request.vars.street_id),
'address.avenue_id'))
db.define_table('address',
Field('street_id', "reference road", label='Street'),
Field('avenue_id', "reference road", label='Avenue'),
#format='%(street_id)s %(avenue_id)s',
on_define=set_address_requirements
)
db.define_table('equipment',
Field('address_id', 'reference address', label='Address'),
... more fields related to equipment
}
The address table operates correctly showing road names in both a street
and avenue drop down properly filtered when adding a new record to the
address table.
I want the equipment table address_id field to show the pair of road names
not the ids. I think I need to find the
correct format specifier which is commented out right now. I get the id
values if I use it but have tried to find a way
to get db.road.street_id.name which of course won't work, it is just for
illustration of what I want. I am just using the admin dtabase interface to
check it.
Thanks,
Ron
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.