Much thanks. I've been struggling with various sub-par implementations of
this for a while. I wondered how you could get a recursive represent.

M.

On 2 June 2012 21:14, Anthony <abasta...@gmail.com> wrote:

> db.define_table('customers_**job',
>>     Field('city', db.cities),
>>     Field('description', 'text'),
>>     Field('customer', db.customer),
>>     format="%(customer)s - %(city)s"
>> )
>
>
> The "format" argument to define_table() is not recursive -- the "customer"
> value in the format argument above will simply be the value of the
> "customer" field, which is an integer id referring to the db.customer
> table. The db.customer table has its own "format" argument, but that format
> is not used in constructing the formats of any referring tables. Instead of
> providing a string format, as above, you can use a callable (e.g., lambda)
> format to achieve what you want:
>
> db.define_table('customers_job',
>     Field('city', db.cities),
>     Field('description', 'text'),
>     Field('customer', db.customer),
>
>     format=lambda r: '%s - %s' % (db.customer[r.customer].customer,
>                                   db.cities[r.city].city)
> )
>
> That will take the id values of the record from the city and customer
> fields and use them to query the db.customer and db.cities tables,
> respectively, to obtain the customer and city names.
>
> Anthony
>

Reply via email to