Just use a dictionary to do that. Examples are in the book.
On Tue, Aug 14, 2012 at 8:59 AM, Mike Girard <[email protected]> wrote: > I don't think you have understood my question. > > My concern is not that I have too many fields nor my field names. > > I am asking if there is an easy way to produce a data structure that lends > itself to the output I want: > > Foreach movie in movies > print movie.title > foreach stars in movie.stars > print star.name > > > > On Monday, August 13, 2012 6:47:13 PM UTC-4, Alec Taylor wrote: >> >> It sounds like you want to reduce the fields shown in the results, since >> you already know some of the information. >> >> However the additional queries, though smaller, will require more >> resources than a simple join. So I recommend just sticking with the join, >> and displaying in your view what you'd like. >> >> As for the wrapper to give things easier to work with names, just specify >> said information in your controller. >> >> On 14/08/2012 8:04 AM, "Mike Girard" <[email protected]> wrote: >>> >>> I have a movie table that has a many-to-many relationship with a person >>> table expressed through a star table. >>> >>> A simplified version of my model: >>> >>> db.define_table('movie', >>> >>> Field('title','string'), >>> >>> db.define_table('person', >>> >>> Field('name', 'string', unique=True), >>> >>> db.define_table('star', >>> >>> Field('movie_id', db.movie), >>> >>> Field('person_id', db.person), >>> >>> I am able to create a select that joins the three tables and produces a >>> result with all the data I need. >>> >>> It's easy to iterate through the result and produce something akin to >>> this: >>> >>> Movie Title Star 1 >>> >>> Movie Title Star 2 >>> >>> Movie Title Star 3 >>> >>> >>> What I want is: >>> >>> Movie Title 1 >>> >>> Star 1, Star 2, Star 3 >>> >>> >>> Movie Title 2 >>> >>> Star 1, Star 2, Star 3 >>> >>> >>> Programmatically, I'd like something like: >>> >>> for each movie in rows >>> >>> <h2>move.title</h2> >>> >>> <ul> >>> >>> for each star in movie.stars >>> >>> <li>star.name</li> >>> >>> >>> Before I write a function to pre-process the result, can someone tell me >>> if there is a helper for producing a result of this kind? >>> >>> This thread addresses the same issue - >>> >>> https://groups.google.com/forum/?fromgroups#!topic/web2py/GQsMt4qvqSs >>> >>> - but I was unable to discern the solution the question asker had >>> produced for himself, the key to which was this: >>> >>> "web2py automatically add the many-to-many sets to an instance with the >>> >>> same name of the relation table" >>> >>> I do not know what that means. >>> >>> -- >>> >>> >>> > > -- > > > --

