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)
>>>
>>>
>>>
>>>
>>>
>>>
--