Greetings!

I've known about sqlalchemy for a long time and have been interested in
using it professionally for a while now. I finally have the chance to use it
and have really been enjoying it. But it turns out that I am a little
confused about the best way to handle m2m relationships that have additional
fields.

Let's say we have 4 tables, User, Tag, Post, PostTagAssociation.
PostTagAssociation has FKs of course, but also a tagged_at datetime field.

I am familiar with association_proxy, but I prefer a different sort of
interface. Something closer to dynamic_loader that would let me do things
like:

#querying across my dynamic_loader:
post = test_user.posts.filter(Post.
title.like('%geopolitic%')).first()
#query through an association proxy, eg to get all posts tagged with war
related keywords:
#of course, this doesn't work since it returns an AssociationList instead of
an AppenderQuery:
post.tags.filter(Tag.name.like('%war%'))
#and then i still want to be able to have the AssociationList functionality
like:
post.tags.append(Tag("peace"))
post.tags.remove(Tag("war"))
#what would be really amazing is if I could set it up to decorate
#the returned item with some or all fields from the m2m table, eg:
print post.tags.first().tagged_at # => 10/27/2009 21:24

This seems like it would be commonly desired functionality, so I am
wondering if perhaps: a) I missed it, and there is some option already in
sqlalchemy, or b) Someone already has created an extension that provides
this.

If not, I wonder if supplying a new query class to the query_class option of
dynamic_loader might be able to accomplish this. Does that strategy make
sense? Are there any examples around that supply a query_class to the
dynamic_loader function? I couldn't find any, though I definitely might have
missed them.

I know it's also possible that am thinking about this all wrong, asking the
wrong question since I am used to other kinds of ORMs. If so, I'd love to
hear how experienced sqlalchemy users achieve this same sort of
functionality (eg, do they manually add methods to their model classes that
work directly with the association table and do a subquery, or something
completely different?)

Thank you so very much, and please excuse the long post.

Best!
Jared Nuzzolillo

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to