On May 7, 2008, at 7:23 PM, Bobby Impollonia wrote:
> > secondary_table = Table('secondary', Base.metadata, > Column('left_id', Integer, ForeignKey('parent.id'), > nullable=False), > Column('right_id', Integer, ForeignKey('parent.id'), > nullable=False)) > > class Parent(Base): > __tablename__ = 'parent' > id = Column(Integer, primary_key=True) > cls = Column(String(50)) > __mapper_args__ = dict(polymorphic_on = cls ) > > class Child1(Parent): > __tablename__ = 'child1' > id = Column(Integer, ForeignKey('parent.id'), primary_key=True) > __mapper_args__ = dict(polymorphic_identity = 'child1', > inherit_condition=Parent.id==id) > > class Child2(Parent): > __tablename__ = 'child2' > id = Column(Integer, ForeignKey('parent.id'), primary_key=True) > __mapper_args__ = dict(polymorphic_identity = 'child2') > > Child1.left_child2 = relation(Child2, secondary = secondary_table, > primaryjoin = Child1.c.id == secondary_table.c.right_id, > secondaryjoin = Child2.c.id == secondary_table.c.left_id, > uselist = False, > foreign_keys = [secondary_table.c.left_id, > secondary_table.c.right_id], > backref = 'the_backref') > > The first time I try to create an object or do a query, I get: > <class 'sqlalchemy.exceptions.ArgumentError'>: Could not determine > relation direction for primaryjoin condition 'child2.id = > secondary.left_id', on relation Child2.the_backref (Child1). Specify > the foreign_keys argument to indicate which columns on the relation > are foreign. when you specify primaryjoin/secondaryjoin to relation(), those arguments are not copied into the backref automatically, since you've gone explicit (perhaps this should be adjusted in 0.5). So you need to use backref=backref('the_backref', primaryjoin=<join>, secondaryjoin=<otherjoin>, secondary=<table>, foreign_keys=<keys>) in this case. --~--~---------~--~----~------------~-------~--~----~ 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?hl=en -~----------~----~----~----~------~----~------~--~---