Hi all,

I'm implementing a tagging system for a site I'm working on. A 
registered user can tag a page, and I need to be able to track which 
users tagged which pages with which tag. I also need to be able to 
easily count the number of users who tagged a recipe with a certain tag, 
and how many recipes a user has tagged with a certain tag (for 
generating tag clouds, etc -- hence SQLRelatedJoin below rather than 
RelatedJoin).

My model looks something like this:

#---------------------------------------------------------------------

class User(SQLObject):
        class sqlmeta: table = 'tg_user' # Turbogears project
        ...
        tags = SQLRelatedJoin('Tag', intermediateTable="tag_users", 
joinColumn='user_id', otherColumn='tag_id')



class Tag(SQLObject):
        name = UnicodeCol(alternateID=True)
        pages = SQLRelatedJoin('Page', intermediateTable='page_tags', 
joinColumn='tag_id', otherColumn='page_id')
        users = SQLRelatedJoin('User', intermediateTable='tag_users', 
joinColumn='tag_id', otherColumn='user_id')



class Page(SQLObject):
        ...
        tags = SQLRelatedJoin('Tag', intermediateTable='page_tags', 
joinColumn='page_id', otherColumn='tag_id')

#---------------------------------------------------------------------

I'm coming across difficulty while trying to find out which tags a user 
has used for a particular page. At the moment I've had to resort to the 
following code, but I'm sure this should be possible as a pure select() 
statement or similar.

# page and user are instances of Page and User respectively.
userstags = filter(
                lambda tag: page in tag.pages,
                user.tags.distinct().orderBy(Tag.q.name)
)



Thanks and regards,

Nick Murdoch

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
sqlobject-discuss mailing list
sqlobject-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss

Reply via email to