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.

Reply via email to