Thanks for the help, it works. However, this alters the table definition.
1) Is there a way that the value is only set temporarily ?
2) When the address field is empty, can I use other fields , like city,
country and etc?
On Saturday, August 5, 2017 at 9:10:25 PM UTC+2, Anthony wrote:
>
> 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 [email protected].
For more options, visit https://groups.google.com/d/optout.