【问题标题】:python app engine Model query for models in the same grouppython app engine模型查询同一组中的模型
【发布时间】:2011-04-26 16:58:13
【问题描述】:

我有 db.Model 类型的实体的事务组,它们定义了父级。我想查询数据存储以仅返回同一组中的模型。目前我正在查询“种类”的所有对象,然后删除那些不具有相同根实体的对象。

有没有更清洁的方法来做到这一点 - 我在 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 的查询,因为它们具有相同的父级。

【问题讨论】:

  • 您能否提供有关您的实际模型定义的更多信息?我可能误解了您的模型关系,但祖先查询会有所帮助吗?
  • @Will - 感谢您的评论,我添加了一些伪代码,让我知道这是否足以让问题变得清晰。
  • @Will McCutchen 阅读了我正在寻找的祖先查询 - 谢谢。

标签: python google-app-engine


【解决方案1】:

我认为这就是您要寻找的。

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

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

【讨论】:

    【解决方案2】:
    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) 
    

    【讨论】:

      猜你喜欢
      • 2011-07-20
      • 2022-01-14
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多