Cliff In my table definition I use db.table_name just as in your example. And in my controller I have a mixture of both, some where I specify the linked tables and some where I just let smartgrid figure it out. Here is a sample model:
benefitProgram = db.define_table('benefitProgram', Field('benefitProgramId', 'id', readable=False), Field('name', length=50, required=True, unique=True), format='%(name)s') db.benefitProgram.name.requires = [IS_NOT_EMPTY(), IS_NOT_IN_DB(db, db. benefitProgram.name)] db.benefitProgram._plural = 'Benefit Programs' benefitLevel = db.define_table('benefitLevel', Field('benefitLevelId', 'id', readable=False), Field('benefitProgramId', db.benefitProgram, required=True, label='Benefit Program'), Field('name', length=50, required=True), format='%(name)s') db.benefitLevel.benefitProgramId.requires = IS_IN_DB(db, db.benefitProgram. benefitProgramId, '%(name)s', zero='..') db.benefitLevel.name.requires = IS_NOT_EMPTY() db.benefitLevel._plural = 'Benefit Levels' This works fine generating the smartgrid with links. -Jim On Monday, November 26, 2012 2:52:57 PM UTC-6, Cliff Kachinske wrote: > > That alone is worth knowing. > > Do you identify the related tables using the db.tablename syntax or > 'reference tablename' syntax? > > Do you call the referencing id, for example, 'supplier_id', or just > 'supplier'? > > I'm guessing there's some subtle point I'm missing in my model files. > > On Monday, November 26, 2012 3:42:18 PM UTC-5, Jim S wrote: >> >> Sorry I don't have an answer for you but can confirm that linked_tables >> are working fine for me in 2.2.1. >> >> -Jim >> >> On Monday, November 26, 2012 12:06:49 PM UTC-6, Cliff Kachinske wrote: >>> >>> Smartgrid isn't picking up linked tables in V 2.2.1. Could I be missing >>> something obvious? Any suggestions gratefully accepted. >>> >>> >>> Here are three tables from my model. >>> >>> db.define_table( >>> 'suppliers', >>> Field('name', length=256, required=True, notnull=True), >>> Field('address', length=64), >>> Field('address_2', length=64), >>> # details omitted >>> .... >>> ) >>> >>> >>> db.define_table( >>> 'supplier_contacts', >>> Field('supplier_id', db.suppliers), >>> Field('first_name', length=32, required=True, notnull=True), >>> # details omitted >>> ... >>> ) >>> >>> >>> db.define_table('product_suppliers', >>> Field('product_id', db.products), >>> Field('supplier_id', db.suppliers), >>> Field('lead_time', 'integer', # details omitted >>> ) >>> >>> >>> The smartgrid from this controller code fails to contain a link to >>> supplier_contacts. Worse, if I add a linked_tables argument the grid >>> displays no links at all. >>> >>> def smartindex(): >>> form = SQLFORM.smartgrid( >>> db.suppliers, >>> ## linked_tables = [ >>> ## db.supplier_contacts >>> ## ], >>> # links_in_grid=True, >>> # fields=[db.suppliers.name], >>> ) >>> return dict(form=form) >>> >>> >>> >>> >>> >>> --