From d22f5edcae0f29c6542e800660bc4fef9b3f12cb Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Thu, 22 Dec 2005 03:25:43 +0000 Subject: [PATCH] deferred property, checks for NULL primary key components and returns None --- lib/sqlalchemy/mapping/properties.py | 5 ++++- test/mapper.py | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/sqlalchemy/mapping/properties.py b/lib/sqlalchemy/mapping/properties.py index f3862ddd9d..922aab453d 100644 --- a/lib/sqlalchemy/mapping/properties.py +++ b/lib/sqlalchemy/mapping/properties.py @@ -80,7 +80,10 @@ class DeferredColumnProperty(ColumnProperty): def lazyload(): clause = sql.and_() for primary_key in self.parent.pks_by_table[self.parent.primarytable]: - clause.clauses.append(primary_key == self.parent._getattrbycolumn(instance, primary_key)) + attr = self.parent._getattrbycolumn(instance, primary_key) + if not attr: + return None + clause.clauses.append(primary_key == attr) return sql.select([self.parent.table.c[self.key]], clause).scalar() return lazyload diff --git a/test/mapper.py b/test/mapper.py index 51751de6f4..bcc6de098c 100644 --- a/test/mapper.py +++ b/test/mapper.py @@ -184,6 +184,9 @@ class DeferredTest(MapperSuperTest): 'description':deferred(orders.c.description) }) + o = Order() + self.assert_(o.description is None) + def go(): l = m.select() o2 = l[2] -- 2.47.2