you can pass orderby to IS_IN_DB from the shell you can get help about every function like
>>> help(IS_IN_DB) On Oct 6, 2:55 am, annet <[email protected]> wrote: > This being your model: > > db.define_table('teachers', > Field('code',length=18,default='',notnull=True,unique=True), > migrate='teachers.table') > > db.define_table('subjects', > Field('code',length=30,default='',notnull=True,unique=True), > migrate='subjects.table') > > db.define_table('teachers_subjects', > Field('teacher_id',db.teachers), > Field('subject_id',db.subjects), > migrate='teachers_subjects.table') > > db.teachers_subjects.teacher_id.requires=IS_IN_DB(db,db.teachers.id,'% > (code)s',zero=None) > db.teachers_subjects.subject_id.requires=IS_IN_DB(db,db.subjects.id,'% > (code)s',zero=None) > > This being the population in the tables: > > teachers: > 1 t1 > 2 t2 > > subjects > 1 a > 2 b > 3 c > 4 d > 5 e > 6 f > 7 9 > > teachers_subjects > 1 1 1 > 2 1 4 > 3 1 7 > 4 2 2 > > The code to create the drop box would be: > > def index(): > rows=db().select(db.subjects.id,db.subjects.code,\ > > left=db.teachers_subjects.on((db.subjects.id==db.teachers_subjects.subject_id) > \ > &(db.teachers_subjects.teacher_id==1)),\ > orderby=~db.teachers_subjects.teacher_id|db.subjects.id) > key=[k.id for k in rows] > value=[v.code for v in rows] > > form=SQLFORM.factory(Field('subject',requires=IS_IN_SET(key,value,zero=None))) > return dict(form=form) > > Kind regards, > > Annet.

