Instead of:

db.define_table('owner',
                Field('name'))
db.define_table('dog',
                Field('owner', db.owner))
db.dog.owner.requires = IS_IN_DB(db, owner.id', '%(name)s')

do this:

db.define_table('owner',
                Field('name'),
                format='%(name)s')
db.define_table('dog',
                Field('owner', db.owner))

That will give you the IS_IN_DB validator automatically, as well as a 
default "represent" attribute based on the "name" field of db.owner.

In your code, you can do:

{{=dog.owner.name}}

which does a recursive select. Another option is:

{{for dog in dogs.render():}}
{{=dog.owner}}
{{pass}}

dogs.render() will apply the "represent" attribute of each field to each 
row, so you don't have to do the recursive select explicitly.

Note, if you have a lot of rows to render, the above methods will be 
inefficient because they will do an additional select for each record. In 
that case, it would be more efficient to do a single join with the initial 
query in order to get the owner name in the original set of records.

Anthony

On Saturday, November 30, 2013 11:30:24 AM UTC-5, raferbop wrote:
>
> Good day Guys,
>
> How do you display the value of a reference field, such as the owner's 
> name, in the dog table, instead of the owner.id (in the 
> default/display_dogs page).
>
> #Model
>
> db.define_table('owner',
>                       Field('name'))
>
> db.define_table('dog',
>                       Field('owner', db.owner))
>
> db.dog.owner.requires = IS_IN_DB(db, owner.id', '%(name)s'
>
> #Controller
>
> def display_dogs():
>      dogs = db(db.dogs).select()
>      return locals()
>
> #View
>
> {{for dog in dogs:}}
>
> {{=(dog.owner)}}
>
> {{pass}}
>
>
> Just for further clarification, the above code will display the owner id 
> #, instead of the owners name, in the default/display_dogs page
>

-- 
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/groups/opt_out.

Reply via email to