]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Declarative will properly interpret the "foreign_keys" argument
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 17 Feb 2009 22:09:30 +0000 (22:09 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 17 Feb 2009 22:09:30 +0000 (22:09 +0000)
on a backref() if it's a string.

CHANGES
lib/sqlalchemy/ext/declarative.py
test/ext/declarative.py

diff --git a/CHANGES b/CHANGES
index 7834d578268455b02da65d9111ebab6f4aa55be1..629fd4f21bbb74c826e742e7d6ef7068a2c70832 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -91,6 +91,9 @@ CHANGES
       explicitly.  Allows mixins to be used with joined table
       inheritance.
 
+    - Declarative will properly interpret the "foreign_keys" argument
+      on a backref() if it's a string.
+      
 0.5.2
 ======
 
index 0fec835ed595ca369a352d9eacce0d3e2d0ac905..f1b2e65fb59931ea51ae7030db2d995fc337aa3a 100644 (file)
@@ -605,7 +605,7 @@ def _deferred_relation(cls, prop):
                 setattr(prop, attr, resolve_arg(v))
 
         if prop.backref:
-            for attr in ('primaryjoin', 'secondaryjoin', 'secondary', '_foreign_keys', 'remote_side', 'order_by'):
+            for attr in ('primaryjoin', 'secondaryjoin', 'secondary', 'foreign_keys', 'remote_side', 'order_by'):
                if attr in prop.backref.kwargs and isinstance(prop.backref.kwargs[attr], basestring):
                    prop.backref.kwargs[attr] = resolve_arg(prop.backref.kwargs[attr])
 
index f6f1e6cfab3a3fc509e6cc9bfe9e410d3857e163..fb8190f2edb3cc201b8fc2e48da03284fc2bb35d 100644 (file)
@@ -117,7 +117,9 @@ class DeclarativeTest(DeclarativeTestBase):
             id = Column(Integer, primary_key=True)
             name = Column(String(50))
             addresses = relation("Address", order_by="desc(Address.email)", 
-                primaryjoin="User.id==Address.user_id", foreign_keys="[Address.user_id]")
+                primaryjoin="User.id==Address.user_id", foreign_keys="[Address.user_id]",
+                backref=backref('user', primaryjoin="User.id==Address.user_id", foreign_keys="[Address.user_id]")
+                )
         
         class Address(Base, ComparableEntity):
             __tablename__ = 'addresses'