python app engine对同一组中的模型进行模型查询

时间:2011-04-26 16:58:13

标签: python google-app-engine

我有事务性的db.Model类型的实体组,它们定义了父类。我想查询数据存储区只返回同一组中的模型。目前我正在查询'Kind'的所有对象,然后删除那些没有相同root实体的对象。

有更清洁的方法吗 - 我在sdk中看不到一个。

例如:

from google.appengine.ext import db

class ParentObject(db.Model):
  ....


class ChildObject(db.Model):
  ....


parent1 = ParentObject()
parent2 = ParentObject()
child1 = ChildObject(parent=parent1)
child2 = ChildObject(parent=parent2)
child3 = ChildObject(parent=parent1)

我想运行一个返回child1和child3的查询,因为它们具有相同的父级。

2 个答案:

答案 0 :(得分:3)

我认为这就是你要找的东西。

get_chlids=ChildObject.all().ancestor(parent1)

了解有关appengine建模的更多信息。你可以看看here

答案 1 :(得分:1)

class TestFamilyTree(unittest.TestCase):

def test_family_tree(self):
  parent1 = ParentObject()
  parent1.put()
  parent2 = ParentObject()
  parent2.put()
  child1 = ChildObject(parent=parent1)
  child1.put()
  child2 = ChildObject(parent=parent2)
  child2.put()
  child3 = ChildObject(parent=parent1)
  child3.put()
  query = ChildObject.all()
  query.ancestor(child1.parent())
  siblings = query.fetch(100)
  self.assertEqual(len(siblings),2)