On Aug 12, 2010, at 5:43 PM, Alvaro Reinoso wrote:

> 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?


user_media_groups needs to have a ForeignKey that points to "users".  




> 
> 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.
> 

-- 
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.

Reply via email to