Hi Hector, If I'm not mistaken, everywhere you wrote (MyObject.id==MyObject.containerId), you meant to write: (Container.id==MyObject.containerId).
Instead of the backref technique, why not just create the MyObject-- >Container relationship a single time in your MyObject class. That should be able to coexist with your first code example (with no backrefs). On Nov 11, 8:16 am, Hector Blanco <white.li...@gmail.com> wrote: > I have a class that has two relationships to the same type of objects. > One of the relationships will store objects of type "VR" and the other > objects with a type "CC". One object can only be in one of the lists > (relationships) at the same time: > > This is the "container" class and its two relationships: > > class Container(rdb.Model): > rdb.metadata(metadata) > rdb.tablename("containers") > > id = Column("id", Integer, primary_key=True) > > relation1 = relationship("MyObject", > uselist=True, > primaryjoin=lambda: and_((MyObject.id == > MyObject.containerId), > (MyObject._type == "VR")), > cascade="all, delete, delete-orphan" > ) > > relation2 = relationship("MyObject", > uselist=True, > primaryjoin=lambda: and_((MyObject.id == > MyObject.containerId), > (MyObject._type == "CC")), > cascade="all, delete, delete-orphan" > ) > > I don't think there's need to mention, but, MyObject.containerId is > a ForeignKey "pointing" to the Container.id. > > I'd like to know if there's a way to create a backref so I will be > able to access the "container" through the "MyObject" class. The idea > would be having something like: > > relation1 = relationship("MyObject", > uselist=True, > primaryjoin=lambda: and_((MyObject.id == > MyObject.containerId), > (MyObject._type == "VR")), > cascade="all, delete, delete-orphan", > backref=backref('container', order_by=id) > ) > > relation2 = relationship("MyObject", > uselist=True, > primaryjoin=lambda: and_((MyObject.id == > MyObject.containerId), > (MyObject._type == "CC")), > cascade="all, delete, delete-orphan", > backref=backref('container', order_by=id) > ) > > But of course, that fails because it's trying to add two ".container" > fields to the "MyObject" class. > > I have also seen that you can define "joins" in the backref, but I > haven't been able to find examples about how to define it. And I am > still not very sure that that would allow me to have to backrefs with > the same name/identifier. > > I just need to know if it's even possible having two backrefs with the > same name. Actually, a "you really got the whole concept wrong" may > help too (if that's the case) . If it's doable, does any of you know > where can I find examples of "advanced" backref usage? With primary > joins, secondary joins and all that juicy stuff... > > Thank you 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 at http://groups.google.com/group/sqlalchemy?hl=en.