May I make a suggestion? Your model will be simpler like this ... db.define_table('province',
SQLField('name', 'string', length=50, required=True, default=None)) db.define_table('cities', SQLField('name', 'string', length=50, required=True), SQLField('id_province',db.province, required=IS_IN_SET(db.province))) db.define_table('customer', SQLField('name', 'string', length=50, required=True), # Removed id_province field SQLField('id_cities',db.cities, required=IS_IN_SET(db.cities))) The id_province field is redundant and unnecessary. If you wish to know a customer's province, join the tables like this: # request.args(0) contains the customer's id ((db.customer.id==request.args(0) & (db.customer.id_cities==db.cities.id) & (db.cities.id_province==db.province.id) ) On Monday, April 2, 2012 2:38:51 PM UTC-4, visuallinux wrote: > > Dear All. > > I have the followings on models: > > > db.define_table('province', > SQLField('name', 'string', length=50, required=True, > default=None)) > > db.define_table('cities', > SQLField('name', 'string', length=50, required=True), > SQLField('id_province',db.province, > required=IS_IN_SET(db.province))) > > db.define_table('customer', > SQLField('name', 'string', length=50, required=True), > SQLField('id_province',db.province, > required=IS_IN_SET(db.province)), > SQLField('id_cities',db.cities, required=IS_IN_SET(db.cities))) > > > I need to implement a FORM for create customers so when i selected a > options in SELECT province the SELECT cities automatically add the cities > that belong to the province SELECTED. > > Any idea how i can do? > > Fernando. > >