Hi all,
How to solve this: There are two tables, table "xref" has two fields with a reference to table "table". Look at the format of "table". db.define_table('table', Field('name', type='string'), Field('number', type='integer'), auth.signature, format= lambda row: str(row.number) + ' (' +row.name + ')', ## @1 migrate=settings.migrate) db.define_table('xref', Field('t1_ref', type='reference table', widget = SQLFORM.widgets.autocomplete(request, db.table.id, id_field=db.table.id)), Field('t2_ref', type='reference table', widget = SQLFORM.widgets.autocomplete(request, db.table.id, id_field=db.table.id)), auth.signature, migrate=settings.migrate) Now if in the controller I define form = crud.update(db.xref, record) to update one record in xref, or form = crud.create(db.xref) to create a new record in xref the autocomplete widget always returns the ids of the table "table", not the required format (see @1). The required format is shown correctly only with crud.read, or when in crud.update the property writabe of the field is set to False, for example as below: def edit(): record = db.xref(request.args(0)) form = crud.update(db.xref, record) db.xref.t1_ref.writable = False return dict(form=form) In this case the field t1_ref is represented correctly (as @1), the field t2_ref shows an autocomplete widget with only ids of table. How to make that the autcomplete widget shows always a list formatted as in @1, and not just the ids of the referenced table? --