diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-07-19 18:55:11 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-07-19 18:55:11 +0000 |
commit | c5141f2981a69c18338ccabc97067d1d563d43a9 (patch) | |
tree | 38442d5b82432f6b776cab36fcbb60f04f798612 /test/ext/declarative.py | |
parent | e78d06a4db273cd1b5b2b2212a5b2d5d15270d7c (diff) | |
download | sqlalchemy-c5141f2981a69c18338ccabc97067d1d563d43a9.tar.gz |
- Class-bound attributes sent as arguments to
relation()'s remote_side and foreign_keys parameters
are now accepted, allowing them to be used with declarative.
Diffstat (limited to 'test/ext/declarative.py')
-rw-r--r-- | test/ext/declarative.py | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/test/ext/declarative.py b/test/ext/declarative.py index 8ea3abd61..0fafc5999 100644 --- a/test/ext/declarative.py +++ b/test/ext/declarative.py @@ -107,7 +107,33 @@ class DeclarativeTest(testing.TestBase, testing.AssertsExecutionResults): self.assertEquals(sess.query(User).filter(User.name == 'ed').one(), User(name='ed', addresses=[Address(email='xyz'), Address(email='def'), Address(email='abc')]) ) - + + def test_uncompiled_attributes_in_relation(self): + class Address(Base, ComparableEntity): + __tablename__ = 'addresses' + id = Column(Integer, primary_key=True) + email = Column(String(50)) + user_id = Column(Integer) # note no foreign key + + class User(Base, ComparableEntity): + __tablename__ = 'users' + id = Column(Integer, primary_key=True) + name = Column(String(50)) + addresses = relation("Address", order_by=Address.email, + foreign_keys=Address.user_id, remote_side=Address.user_id, + primaryjoin=id==Address.user_id, + ) + + Base.metadata.create_all() + + sess = create_session() + u1 = User(name='ed', addresses=[Address(email='abc'), Address(email='xyz'), Address(email='def')]) + sess.add(u1) + sess.flush() + sess.clear() + self.assertEquals(sess.query(User).filter(User.name == 'ed').one(), + User(name='ed', addresses=[Address(email='abc'), Address(email='def'), Address(email='xyz')]) + ) def test_nice_dependency_error(self): class User(Base): |