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.
However, if I remove the backref, the left_child2 property works fine,
so this only seems to be failing in one direction.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---