I'm trying that, but I got different error: "Could not determine relationship direction for primaryjoin condition 'users.id = :id_1', on relationship User.mediaGroups. Specify the 'foreign_keys' argument to indicate which columns on the relationship are foreign."
As I can see, the error is related to the users table which I don't use in this class. However, user table is related to media_groups. This is the user's table: class User(rdb.Model): """Represents the user""" rdb.metadata(metadata) rdb.tablename("users") id = Column("id", Integer, primary_key=True) name = Column("name", String(50)) email = Column("email", String(50)) channels = relationship(Channel, secondary=user_channels, order_by=Channel.titleView, backref="users") mediaGroups = relationship(MediaGroup, secondary=user_media_groups, order_by=MediaGroup.title, backref="users") Do I need to add something else to that table? Thanks!!! On Aug 12, 5:15 pm, Michael Bayer <mike...@zzzcomputing.com> wrote: > On Aug 12, 2010, at 5:09 PM, Michael Bayer wrote: > > > > > > > On Aug 12, 2010, at 4:58 PM, Alvaro Reinoso wrote: > > >> I'm still working on the solution. I've found out some stuff in > >> internet. I guess I'm close to, but I haven't got it yet. I'm using > >> this for the relation: > > >> mediaGroups = relationship("MediaGroup", > >> secondary=media_group_groups, order_by="MediaGroup.title", > >> backref='media_groups', foreign_keys = > >> ["media_group_groups.groupA_id", "media_group_groups.groupB_id"], > >> primaryjoin = "MediaGroup.id == > >> media_group_groups.groupA_id", > >> secondaryjoin = "MediaGroup.id == media_group_groups.groupB_id") > > >> I'm playing with the parameters, but I usually get this error: > > >> "ArgumentError: Could not determine relationship direction for > >> primaryjoin condition 'users.id = :id_1', on relationship > >> User.mediaGroups. Specify the 'foreign_keys' argument to indicate > >> which columns on the relationship are foreign." > > > "media_group_groups" is not available when "primaryjoin" is evaluated as a > > string, nor within "foreign_keys" which is not necessary here since your > > meta_group_groups already has ForeignKey objects on it, so use a non-string > > format for primaryjoin. i will add additional examples to the declarative > > docs. > > scratch part of that, tablenames are available in the string eval as long as > they're from the same MetaData: > > mediaGroup = relationship("MediaGroup", > > secondary=media_group_groups, order_by="MediaGroup.title", > backref="media_groups", > primaryjoin="MediaGroup.id==media_group_groups.c.groupA_id", > secondaryjoin="MediaGroup.id==media_group_groups.c.groupB_id" > > also the error for the exampe you have above should be "'Table' object has no > attribute 'groupA_id'". > > > > >> Thank you! > > >> On Aug 12, 1:08 pm, Alvaro Reinoso <alvrein...@gmail.com> wrote: > >>> Hello, > > >>> I'm trying to link one table to itself. I have media groups which can > >>> contain more media group. I created a relation many to many: > > >>> media_group_groups = Table( > >>> "media_group_groups", > >>> metadata, > >>> Column("groupA_id", Integer, > >>> ForeignKey("media_groups.id")), > >>> Column("groupB_id", Integer, > >>> ForeignKey("media_groups.id")) > >>> ) > > >>> class MediaGroup(rdb.Model): > >>> """Represents MediaGroup class. Conteins channels and other media > >>> groups""" > >>> rdb.metadata(metadata) > >>> rdb.tablename("media_groups") > > >>> id = Column("id", Integer, primary_key=True) > >>> title = Column("title", String(100)) > >>> parents = Column("parents", String(512)) > > >>> channels = relationship(Channel, secondary=media_group_channels, > >>> order_by=Channel.titleView, backref="media_groups") > >>> mediaGroup = relationship("MediaGroup", > >>> secondary=media_group_groups, order_by="MediaGroup.title", > >>> backref="media_groups") > > >>> I got this error: > > >>> "ArgumentError: Could not determine join condition between parent/ > >>> child tables on relationship MediaGroup.mediaGroup. Specify a > >>> 'primaryjoin' expression. If this is a many-to-many relationship, > >>> 'secondaryjoin' is needed as well." > > >>> When I create the tables I don't get any error, it's just when I add > >>> any element to it. > >>> Any idea??? > > >>> Thanks in advance! > > >> -- > >> You received this message because you are subscribed to the Google Groups > >> "sqlalchemy" group. > >> To post to this group, send email to sqlalch...@googlegroups.com. > >> To unsubscribe from this group, send email to > >> sqlalchemy+unsubscr...@googlegroups.com. > >> For more options, visit this group > >> athttp://groups.google.com/group/sqlalchemy?hl=en. > > > -- > > You received this message because you are subscribed to the Google Groups > > "sqlalchemy" group. > > To post to this group, send email to sqlalch...@googlegroups.com. > > To unsubscribe from this group, send email to > > sqlalchemy+unsubscr...@googlegroups.com. > > For more options, visit this group > > athttp://groups.google.com/group/sqlalchemy?hl=en. -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@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.