i think i had similar configuration, and i did it like one link was 
using default cascading, the other was just 'all'. but i'm not sure 
if yours is same, and any way i got mine via trial and error.
do play with the cascade options. also i'm not sure if u apply some 
cascade on a backref what happens to the forward side.

On Thursday 15 January 2009 18:30:29 GustaV wrote:
> Hi all,
> I try to set up a many-to-many relation with an association object.
>
> But I want something not usual: I want the child object deleted
> when not owned by any parent anymore.
> This is for a messages/recipients relation: the message is useless
> when everybody removed it from its mailbox!
>
> I tried that, but it doesn't work:
>
> class Parent(meta.DeclarativeBase):
>     id = Column(types.Integer, primary_key=True)
>
> class Child(meta.DeclarativeBase):
>     id = Column(types.Integer, primary_key=True)
>
> class Assoc(meta.DeclarativeBase):
>     p_id = Column(types.Integer,
>                   ForeignKey(Parent.id))
>     c_id = Column(types.Integer,
>                   ForeignKey(Parent.id))
>
>     parent = relation(Parent,
>                       backref=backref('children',
>                                 cascade='all, delete-orphan'))
>     child = relation(Child,
>                      backref='parents',
>                      cascade='delete-orphan')
>
> I expect "child = relation(Child, backref='parents',
> cascade='delete- orphan')" to forward deletes to child when it is
> an orphan. But it looks like it forward the delete even if it is
> not an orphan yet...
>
> It that configuration:
>
>    p1 = Parent()
>    p2 = Parent()
>    c = Child()
>    assoc1 = Assoc(parent=p1, child=c)
>    assoc2 = Assoc(parent=p2, child=c)
>
> p1.children = [ ] will lead to:
> - delete assoc1 (ok)
> - delete c (not ok)
> - update assoc2.c_id = null (not ok)
>
> So why is it not really a delete-orphan? :)
>
> Thanks
>
> GustaV
> 


--~--~---------~--~----~------------~-------~--~----~
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 
sqlalchemy+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to