From 4e109aa21e4a61b39390803bd755b6497519f1cc Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 29 May 2007 04:08:09 +0000 Subject: [PATCH] fix to the backref primary join condition --- examples/poly_assoc/poly_assoc.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/examples/poly_assoc/poly_assoc.py b/examples/poly_assoc/poly_assoc.py index 53ef4d985d..1a2eb2a75f 100644 --- a/examples/poly_assoc/poly_assoc.py +++ b/examples/poly_assoc/poly_assoc.py @@ -24,7 +24,7 @@ the associated target object from those which associate with it. from sqlalchemy import * -metadata = BoundMetaData('sqlite://', echo=False) +metadata = BoundMetaData('sqlite://', echo=True) ####### # addresses table, class, 'addressable interface'. @@ -64,14 +64,17 @@ def addressable(cls, name, uselist=True): table = mapper.local_table cls.create_address = create_address # no constraints. therefore define constraints in an ad-hoc fashion. - primaryjoin = (list(table.primary_key)[0] == addresses.c.addressable_id) & (addresses.c.addressable_type == table.name) + primaryjoin = and_( + list(table.primary_key)[0] == addresses.c.addressable_id, + addresses.c.addressable_type == table.name + ) foreign_keys = [addresses.c.addressable_id] mapper.add_property(name, relation( - Address, - primaryjoin=primaryjoin, uselist=uselist, foreign_keys=foreign_keys, - backref=backref('_backref_%s' % table.name, primaryjoin=primaryjoin, foreign_keys=foreign_keys) + Address, + primaryjoin=primaryjoin, uselist=uselist, foreign_keys=foreign_keys, + backref=backref('_backref_%s' % table.name, primaryjoin=list(table.primary_key)[0] == addresses.c.addressable_id, foreign_keys=foreign_keys) ) - ) + ) mapper(Address, addresses) @@ -80,7 +83,8 @@ mapper(Address, addresses) users = Table("users", metadata, Column('id', Integer, primary_key=True), - Column('name', String(50), nullable=False)) + Column('name', String(50), nullable=False) + ) class User(object): pass -- 2.47.2