From dcf66590d2d4dda35cdb2db25755de4fb1cd84a5 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 2 Jan 2018 17:56:45 -0500 Subject: Check for the endmost target when chaining contains() Fixed regression in association proxy due to :ticket:`3769` (allow for chained any() / has()) where contains() against an association proxy chained in the form (o2m relationship, associationproxy(m2o relationship, m2o relationship)) would raise an error regarding the re-application of contains() on the final link of the chain. Change-Id: Iea51ce84c2c5a332416fff10b1ba0e676cf0bad7 Fixes: #4150 --- lib/sqlalchemy/ext/associationproxy.py | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/sqlalchemy/ext/associationproxy.py') diff --git a/lib/sqlalchemy/ext/associationproxy.py b/lib/sqlalchemy/ext/associationproxy.py index c0dbb538e..d6e9a43cc 100644 --- a/lib/sqlalchemy/ext/associationproxy.py +++ b/lib/sqlalchemy/ext/associationproxy.py @@ -462,6 +462,7 @@ class AssociationProxy(interfaces.InspectionAttrInfo): if target_assoc is not None: return self._comparator._criterion_exists( target_assoc.contains(obj) + if not target_assoc.scalar else target_assoc == obj ) elif self._target_is_object and self.scalar and \ not self._value_is_scalar: -- cgit v1.2.1