The "represent" attribute controls the display of read-only data in grids 
and read-only forms (or read-only fields). The values shown in the select 
element in a form are controlled by the validator, which defaults to 
IS_IN_DB for a reference field. The values shown in the select element 
(generated by the validator) as well as the "represent" attribute are 
controlled by the "format" argument in the definition of the referenced 
table, so the simplest approach is to change that:

db.define_table('customer',
    ...,
    format='%(name)s, %(address)s, %(city)s')

Alternatively, you can explicitly set your own validator for the reference 
field:

    Field('customer', 'reference customer',
          requires=IS_IN_DB(db, 'customer.id', '%(name)s, %(address)s, 
%(city)s'))

Anthony

On Saturday, August 5, 2017 at 2:45:49 PM UTC-4, Vic Ding wrote:
>
> Hi all,
> I have been hitting the wall for probably a simple problem. 
> I have 2 tables sales order and customer, db.sales_order.customer 
> reference customer table.
>
> db.define_table('customer',
>                 auth.signature,
>                 Field('name', 'string', requires=IS_NOT_EMPTY(), 
> label=T("Company name")),
>                 Field('address1', 'string', requires=IS_NOT_EMPTY()),
>                 Field('city', 'string'),
>                 Field('post_code', 'string', label=T("Post code")),
>                 Field('country_id', 'reference country_list', 
> requires=IS_EMPTY_OR(IS_IN_DB(db, 'country_list.id', '%(name)s %(code)s')), 
> label=T("Country")),
>
>
> db.define_table('sales_order',
>                 auth.signature,
>                 Field('ordernumber', 'string', label=T('Your order #'),
>                       unique=True, length=250),
>                 Field('customer', 'reference customer', label=T('Customer')),
>
>
>                 format='%(ordernumber)s'
>                 )
>
>
> On the SQLFORM editing the sales order, I would like to show more info, 
> like customer name + address1 + city, rather than just the name. I tried 
> This is the SQLFORM
>
> db.sales_order.customer.represent = 'change representation'
>
> form = SQLFORM(db.sales_order, so_id, _name='form1')
>
>
> As you can see, I changed the represent of customer filed to a static 
> string. But even this won't work. the editing form is still show the name 
> of the customer. Can someone hint me where I did it wrongly?
> Thanks!
> Cheers,
> Vic
>

-- 
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/d/optout.

Reply via email to