我有2个型号:
class Parent (db.Model) :
data = db.StringProperty()
class Child1 (db.Model) :
parent = db.ReferenceProperty(Parent)
childData = db.StringProperty()
class Child2 (db.Model) :
parent = db.ReferenceProperty(Parent)
childData2 = db.StringProperty()
class Child3 (db.Model) :
parent = db.ReferenceProperty(Parent)
childData3 = db.StringProperty()
...
我想要一个查询,它可以列出所有没有孩子的父母的列表。我该怎么做?
我不想在每个子节点的Parent模型中维护一个标识符,因为我想经常添加新的子模型。
答案 0 :(得分:1)
处理此问题的正确方法是在您的Parent实体中保留子项数。然后,您可以简单地查询子计数等于0的父母。
您不需要在Parent实体中拥有子ID;你想保留计算孩子的数量。孩子是一种模型还是另一种模型并不一定重要。保持这种运行计数的目的是它使您能够解决您的问题,即查询没有孩子的父母。数据存储区或提供此功能的AppEngine查询对象没有本机功能。
因此,由于本地不支持,您可以选择以下两种方式之一:
1)保持孩子数量的运行计数,无论何时添加或删除孩子,都要递增或递减;
2a)查询每种类型的每个孩子并记录父母的唯一值。
2b)查询所有Parent实体,并将它们与来自2a
的唯一父ID进行匹配我会留给你决定哪种方法是正确的。