Well I've done it in another way:
db.define_table('brands',
                Field('id_01', 'id'), # 'id' instead of unique = True
                Field('name'),
                format='%(names')
db.define_table('products',
                Field('code', unique=True),
                Field('description'),
                Field('brand_id_01', 'reference brands', requires = IS_IN_DB
(db, db.brands.id_01, '%(name)s')),
                    represent=lambda id, r: db.brands[id].name)

And that's ok in the SQLORM.grid web2py display brands.name instead of 
products.brand_id_01.

Now the problem is in my custom single record grid view, web2py still 
display products.brand_id_01.
{{=P(T('Brand'), ": ", grid.view_form.record.brand_id_01)}}

Someone's knows why ?

Bye.

Il giorno lunedì 9 dicembre 2013 18:38:52 UTC+1, Gael Princivalle ha 
scritto:
>
> With your solution Field('id_01', 'id')now I can add a custom column in 
> the grid with links (also without a link inside !):
> links = [dict(header=T('Brand'), body=lambda row: 
> (db.brands(row.brand_id_01).name))]
>
> Ok, it works fine, but how can I display this custom column in my custom 
> single view grid ?
> For the description field for example I have:
> {{=P(grid.view_form.record.description)}}
>
> For the custom column ?
> {{=P(grid.view_form.record.links??)}}
>
>
> Regards.
>
>
>
> Il giorno domenica 8 dicembre 2013 16:44:43 UTC+1, Gael Princivalle ha 
> scritto:
>>
>> Hello all.
>>
>> Well I don't understand really how to manage this problem.
>>
>> I cannot use web2py id's for referencing my brands, I need to use id's 
>> from another CRM application called "01". So I have in my "brands" table a 
>> field called "id_01" and in the "products" table a field called 
>> "brand_id_01".
>> When I modify a "products" row in the admin interface I can choose the 
>> "brand_id_01" by the "brands.name", OK, but when I display the 
>> "products" table I see the brand_id_01, KO.
>> Also when I display a SQLFORM.grid from the "products" table I don't see 
>> the "brands.name" instead of the "brand_id_01".
>> How I can display the "brands.name" instead of the "brand_id_01" in my 
>> SQLFORM.grid ?
>>
>> My db:
>> db.define_table('brands',
>>                 Field('id_01', unique = True),
>>                 Field('name'),
>>                 format='%(names')
>> db.define_table('products',
>>                 Field('code', unique=True),
>>                 Field('description'),
>>                 Field('brand_id_01', 'reference brands', requires = 
>> IS_IN_DB(db, db.brands.id_01, '%(name)s')))
>>
>> My controller:
>> def products_listing():
>>     query=db.products
>>     fields = 
>> (db.products.id_01,db.products.code,db.products.description,db.products.brand_id_01)
>>     grid = SQLFORM.grid(query, fields=fields)
>>     return dict(grid=grid)
>>
>> Thanks a lot for any kind of help.
>>
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to