]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- fixed Class.collection==None for m2m relationships
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 22 Apr 2008 15:05:10 +0000 (15:05 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 22 Apr 2008 15:05:10 +0000 (15:05 +0000)
      [ticket:4213]

CHANGES
lib/sqlalchemy/orm/properties.py
test/orm/query.py

diff --git a/CHANGES b/CHANGES
index 3b4f15ee054bf436f8ebedb71c061e33791d1c79..e53c101de5a7cdc96025d3c3b2181c88c9e28ad1 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -33,6 +33,9 @@ CHANGES
       query rows, when the extension is present and only a single-
       entity result is being returned.
       
+    - fixed Class.collection==None for m2m relationships
+      [ticket:4213]
+      
 - sql
     - Added COLLATE support via the .collate(<collation>)
       expression operator and collate(<expr>, <collation>) sql
index 55f6c9875224d574b0cc9552124986ff8e504bc6..847e793986e3c34084f45f57bd270cdbcc35fdc4 100644 (file)
@@ -288,7 +288,7 @@ class PropertyLoader(StrategizedProperty):
             
         def __eq__(self, other):
             if other is None:
-                if self.prop.direction == ONETOMANY:
+                if self.prop.direction in [ONETOMANY, MANYTOMANY]:
                     return ~sql.exists([1], self.prop.primaryjoin)
                 else:
                     return self.prop._optimized_compare(None)
index c5dde6938afa2d22c2b28389366abaaeffc8ea40..4589cf9635a0f037f5949467370aa5b3bde2a819 100644 (file)
@@ -386,6 +386,10 @@ class FilterTest(QueryTest):
         dingaling = sess.query(Dingaling).get(2)
         assert [Address(id=5)] == sess.query(Address).filter(Address.dingaling==dingaling).all()
 
+        # m2m
+        self.assertEquals(sess.query(Item).filter(Item.keywords==None).all(), [Item(id=4), Item(id=5)])
+        self.assertEquals(sess.query(Item).filter(Item.keywords!=None).all(), [Item(id=1),Item(id=2), Item(id=3)])
+        
     def test_filter_by(self):
         sess = create_session()
         user = sess.query(User).get(8)