Excellent! This works just as advertised for obtaining the companies and 
the solution works in my application. I very much appreciate the solution.
 
I was wondering if this was analogous to the following syntax in Django:
 
train.objects.filter(company__name='Amtrak')
 
Please, no offense, because I absolutely love web2py, but the Django syntax 
in this case is much more understandable. Also, if there are more 
relationships to track such as:
 
blog.objects.filter(entry__author__name='Dave')
 
you are able to arbitrarily track any relationship with this syntax. If 
this isn't possible, or if I have misinterpreted the syntax and 
functionality, please let me know.
 
Thank you very much for (a) creating such a great framework and (b) for 
being so committed to helping here on the forums!
 
Dave


On Friday, January 11, 2013 7:13:36 PM UTC-5, Massimo Di Pierro wrote:

> I think you want (I am changing some field names because user and date are 
> resrved keywords):
>
> db.define_table('company',
>   Field('name'),
>   Field('symbol'))
>
> db.define_table('train',
>   Field('user_id', 'reference auth_user', default=auth.user_id),
>   Field('company', db.company),
>   Field('date_event', 'date'),
>   Field('num_cars'))
>
>
> companies = 
> db(db.company.id.belongs(db(db.train.user_id==id)._select(db.train.company,distinct=True)).select(orderby=
> db.company.name)
>
>
>
>
> On Friday, 11 January 2013 17:05:02 UTC-6, Dave Cenker wrote:
>>
>> I am putting together a website for my son so that he can keep track of 
>> trains that he has seen in our area. Here are the applicable models:
>>
>> db.define_table('company',
>>   Field('name'),
>>   Field('symbol'))
>>
>> db.define_table('train',
>>   Field('user', 'reference auth_user', default=auth.user_id),
>>   Field('company', db.company),
>>   Field('date', 'date'),
>>   Field('numCars'))
>>
>> I would like to be able to select all the trains that a particular user 
>> has seen. I believe I can accomplish this with the following:
>>
>> currUserQuery = db.train.user == auth.user_id
>> allTrainsSeenByUser = db(currUserQuery).select(orderby='date desc')
>>
>> What I would like to do is create an index page for each user that splits 
>> out the trains of each company that have been seen. For example, assume 
>> that there are three companies in the database: Amtrak, CSX, and BNSF. Of 
>> these three companies the user has seen trains from Amtrak and CSX. On 
>> their index page, they would see all the Amtrak trains that they have seen 
>> grouped together and all the CSX trains that they have seen grouped 
>> together. Therefore, I would like to perform a database selection that 
>> finds all the trains for a particular user and a particular company.
>>
>> I have found a way to determine which companies a particular user has 
>> seen using the following:
>>
>> companies = db(currUserQuery).select('train.company', 
>> distinct=True).as_list()
>>
>> However, this returns a list of company IDs instead of names and when I 
>> try to do something like this:
>>
>> db(train.company.id == id) it doesn't work.
>>
>> What I'd really like to do is get a list of the names of the companies 
>> that a user has seen and then make a database selection based upon those 
>> names in a manner like this:
>>
>> db(currUserQuery & (db.train.company.name == companyNameText)).select()
>>
>> However, the db.train.company.name doesn't work. Is there a way to 
>> progress down the hierarchy (if you will) to access the company name on a 
>> particular train row given the database structure above. With Django (which 
>> I have used in the past), this would be accomplished similar to this 
>> (train__company__name=companyNameText), but I can't figure out the 
>> corresponding way to do so in web2py.
>>
>> Thanks for any help you can provide!
>>
>> Dave
>>
>>

-- 



Reply via email to