On Feb 17, 2010, at 6:15 AM, cropr wrote:

> I have defined a self  refential class ContentObject to build a node
> tree wih parent child relationships.
> 
> class ContentObject(Base):
>    __tablename__ = 'contentobject'
>    _contentType = 'contentobject'
>    id = Column(types.Integer, primary_key=True, autoincrement=True)
>    parent_id = Column(types.Integer, ForeignKey('contentobject.id'))
>    type = Column(types.String(32))
>    children = relation("ContentObject", backref=backref('parent',
> remote_side=id))
>    __mapper_args__ = {'polymorphic_on':type,
> 'polymorphic_identity':'contentobject'}
>    ...
> 
> Everthing works fine until I define an additional  foreign key
> relation between 2 descandant classes of ContentObject.

search the docs for the "inherit_condition" argument to mapper().




> 
> class A(ContentObject):
>    __tablename__ = 'a'
>    __mapper_args__ = {'polymorphic_identity' : 'a'}
>    id = Column(types.Integer, ForeignKey(ContentObject.id),
> primary_key=True)
>    datum  = Column(types.Date)
> 
> class B(ContentObject):
>    __tablename__ = 'b'
>    __mapper_args__ = {'polymorphic_identity' : 'b}
>    id = Column(types.Integer, ForeignKey(ContentObject.id),
> primary_key=True)
>    linkb_id = Column(types.Integer, ForeignKey(A.id))
>    linkb = relation(EloLijst, primaryjoin='b.c.a_id==a.c.id')
> 
> 
> Now I get the error Can't determine between 'contentobject' and 'b':
> tables have more than one foreign key constraint between them. Specify
> onclause of this join explicitely
> 
> How should I do that?
> 
> -- 
> 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.
> 

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

Reply via email to