summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-05-29 04:08:09 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-05-29 04:08:09 +0000
commit4e109aa21e4a61b39390803bd755b6497519f1cc (patch)
tree6cff3559381e1269ab5166bc9ce9f00e2592eb65
parent18f7d1f02401e11df3a3e68a0eca1894c3cb2302 (diff)
downloadsqlalchemy-4e109aa21e4a61b39390803bd755b6497519f1cc.tar.gz
fix to the backref primary join condition
-rw-r--r--examples/poly_assoc/poly_assoc.py18
1 files changed, 11 insertions, 7 deletions
diff --git a/examples/poly_assoc/poly_assoc.py b/examples/poly_assoc/poly_assoc.py
index 53ef4d985..1a2eb2a75 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