From d5c7bb7582a25014e7aa57d6060cdba5dfa2af90 Mon Sep 17 00:00:00 2001 From: Tom Kedem Date: Sat, 23 Jul 2016 23:19:22 +0300 Subject: [PATCH] Added support for backrefs using `sqlalchemy.orm.backref` which returns a tuple. --- sqlalchemy_utils/listeners.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sqlalchemy_utils/listeners.py b/sqlalchemy_utils/listeners.py index 691578b..3f0f091 100644 --- a/sqlalchemy_utils/listeners.py +++ b/sqlalchemy_utils/listeners.py @@ -227,6 +227,8 @@ def auto_delete_orphans(attr): 'The relationship argument given for auto_delete_orphans needs to ' 'have a backref relationship set.' ) + if isinstance(backref, tuple): + backref = backref[0] @sa.event.listens_for(sa.orm.Session, 'after_flush') def delete_orphan_listener(session, ctx): @@ -249,7 +251,7 @@ def auto_delete_orphans(attr): ( session.query(target_class) .filter( - ~getattr(target_class, attr.property.backref).any() + ~getattr(target_class, backref).any() ) .delete(synchronize_session=False) )