[SQLObject] 外部キーを検索条件にするときは、「キーID」を使用する。
環境
この記事の内容は、SQLObject 0.9で確認しました。
問題点
次のようなモデルがあるとします。
from sqlobject import * class Parent(SQLObject): children = MultipleJoin('Child') class Child(SQLObject): parent = ForeignKey('Parent')
ここで、Parentのidが1であるChildオブジェクトを検索しようとして、
a = Child.select(Child.q.parent==1)
とすると、以下のエラーになります。
/usr/lib/python2.4/site-packages/SQLObject-0.9dev_r2169-py2.4.egg/sqlobject/sqlbuilder.py in __getattr__(self, attr) 375 return self.FieldClass(self.tableName, self.soClass.sqlmeta.idName, attr) 376 elif attr not in self.soClass.sqlmeta.columns:
-
- > 377 raise AttributeError("%s instance has no attribute '%s'" % (self.soClass.__name__, attr))
解決方法
"parent"ではなく、"parentID"を使用します。
a = Child.select(Child.q.parentID==1)