check out www.tenthrow.com, click on a concert and you will see an
"other concerts" box. those are generated following several rules,
the first if finding concerts that share tags with this concert. My
tags have a "magnitude" or a weighting, so some are more valued than
others. hence the magnitude references below. otherwise my tag and
concert_tag tables mimic what you have in your model. I don't display
the tag name that they share though.
my relevant queries:
#active_playlist is a record, passed to my function.
tags = db(db.concert_tag.playlist== \
active_playlist.id).select(db.concert_tag.tag)
count = db.concert_tag.id.count()
sum = db.concert_tag.magnitude.sum()
query = db((db.concert_tag.tag.belongs([t.tag for t in tags]))
&
(db.concert_tag.playlist != active_playlist.id) &
(db.playlist.id == db.concert_tag.playlist) )
rows = query.select(db.playlist.name,
db.concert_tag.playlist,
db.playlist.uid,
count,
sum,
groupby=db.concert_tag.playlist|
db.playlist.uid,
orderby=~count|~sum|~db.playlist.date,
limitby=(0,NUM_RELATED_LINKS))
dunno if that helps or not...
On May 28, 1:31 pm, Jason Brower <[email protected]> wrote:
> I tried doing this last year and I was close and couldn't figure it out.
> I need to complete implementing it and wondered if you could help out.
> Using the attatched model I want to do the following:
> I need to have a list of all the users that have similar tags to the
> user that is logged in. I need those tag names as well.
> As an added sugar candy bonus I wonder if there is an easy way to could
> them or should I just count them as I sort throw them in the view.
> I think I am close with this, it modified from something done last year.
> Am I doing this right?
> Best Regards,
> Jason Brower
>
> My pertinent controller function:
> ---
>
> @auth.requires_login()
> def your_connections():
> related_tags = db((
>
> db.auth_user.id==db.user_tags.user_id)&(db.user_tags.tag_id==db.tag.id)&(db.user_tags.tag_id.belongs(
> db(db.user_tags.user_id==auth.user.id)._select(
> db.user_tags.tag_id)))).select(
> db.auth_user.ALL,db.tag.ALL,groupby=db.auth_user.id)
> return dict(related_tags = related_tags)
> ---
>
> db.py
> 3KViewDownload