(moving to google groups) the idea of using an instrumented list subclass is that you *would* use the association object, and just have the list subclass handle the references to the association object for you, i.e.:
class MyList(list): def append(self, item): super(MyList, self).append(new ItemAssociation(item)) def __getitem__(self, index): return super(MyList, self).__getitem__(index).item ..etc On Nov 1, 2006, at 3:15 PM, Karl Guertin wrote: > I'm working on a database where the relation between users and objects > is defined by an association table that looks like: > > role_objects_table = Table("role_objects", metadata, > Column("objects_id", Integer, > ForeignKey("objects.objects_id"), > primary_key=True), > Column("role",Role_Type), > Column("user_id", Integer, > ForeignKey("tg_user.user_id"), > primary_key=True)) > > Where Role_Type is an Enum class that translates roles onto Unicode > (1). > > And Objects is mapped like so: > > assign_mapper(session.context, Objects, objects_table, properties = > dict( > #... > responsibles = relation(User, secondary=role_objects_table, > primaryjoin = and_(objects_table.c.objects_id == > role_objects_table.c.objects_id, > role_objects_table.c.role == 'R')), > approvers = relation(User, secondary=role_objects_table, > primaryjoin = and_(objects_table.c.objects_id == > role_objects_table.c.objects_id, > role_objects_table.c.role == 'A')), > #... > ) > > So basically the relationship between users and objects is typed by > the role field. This is a textbook use case for the use of an > association object, but using an association object is really > annoying. I would really like to be able to treat each relation as a > normal many to many relation and not have to create intermediate > objects just to set one field to a constant value. > > In looking through the archives I found: > >> You could go more nuts with [object properties] by having the list >> be a >> subclass of "list" which properly does mutation operations too, >> creates >> the association objects automatically, etc. > > Which seems to be what I'm looking to do. I'm assuming that the "list" > referenced here is custom collection_class, but I don't see any > obvious hooks into the secondary table and trying to manage the state > of intermediate objects is more work than I'd like. > > In looking through the code, I noticed > sqlalchemy.orm.attributes.AttributeExtension, which makes it pretty > easy to hook into the event I'm interested in, but I'm having trouble > finding a reference to the secondary table. > > Any guidance would be appreciated. > > ---------------------------------------------------------------------- > --- > Using Tomcat but need to do more? Need to support web services, > security? > Get stuff done quickly with pre-integrated technology to make your > job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache > Geronimo > http://sel.as-us.falkag.net/sel? > cmd=lnk&kid=120709&bid=263057&dat=121642 > _______________________________________________ > Sqlalchemy-users mailing list > Sqlalchemy-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy -~----------~----~----~----~------~----~------~--~---