「scott」を囲む引用符を削除すると、クエリは正常に機能するはずです。
また、Scott の Pet エンティティのすべてに、彼のエンティティを親として持たせることもできます。
class Owner(db.Model):
name = db.StringProperty()
class Pet(db.Model):
petname = db.StringProperty()
scott = Owner(name="scott")
scott.put()
Pet(parent=scott, petname="rufus").put()
Pet(parent=scott, petname="fluffy").put()
Pet(parent=scott, petname="snoogums").put()
pets = Pet.all().ancestor(scott).fetch(100)
# Feed pets to your templating engine. So to speak.
scott を Pet エンティティの親にすることで、それらはすべて同じエンティティ グループに追加され、クエリは、指定された「所有者」の子であるancestor
すべてのエンティティを取得するための単純で簡単な方法を提供します。Pet
祖先クエリを使用すると、非祖先クエリよりもはるかに優れたパフォーマンスが得られるはずです。
これは、Pet エンティティが 1 つのエンティティ グループにのみ属することができるという制限を課しますPet
。また、複数のデータ関係に関与させたい場合は、別のアプローチを選択する必要があります。1 対 1 の関係の場合は、他の関連エンティティへの参照を格納するだけです。
Pet
エンティティの印刷可能な表現を作成するには__unicode__
、次のようなメソッドを指定します。
class Pet(db.Model):
petname = db.StringProperty()
def __unicode__(self):
return "I am " + self.petname
__unicode__
print
ステートメントによって表示される情報を含む文字列を返す必要があります。Nick がコメントで賢明に指摘しているようprint
に、AppEngine アプリケーションでは使用しないでください。SDK には Django テンプレートと Jinja2 が付属しています。それらのいずれかを使用するか、好みのものをインポートします。