我的数据存储区中有这样的内容:
class Referenced(db.Model):
foo = db.StringProperty()
class Parent(db.Model):
ref_key = db.ReferenceProperty(Referenced, collection_name='items')
class Child(Parent):
foo = db.StringProperty()
所以,现在如果我创建一个Referenced
实例和Child
引用该实例,就像这样:
def get_referenced():
referenced = Referenced()
referenced.put()
item = Child(ref_key=referenced.key())
item.put()
return referenced
并尝试访问referenced.items
我将获得一个空列表,因为appengine正在查询Parent
实例的数据存储区ref_key
等于referenced.key()
,显然没有实例在数据存储区中Parent
,因此它返回一个空列表。
所以我的问题,这是一个错误吗?或者也许我做错了什么。有没有办法可以实现这种行为?
非常感谢!
答案 0 :(得分:1)
不,这不是一个错误。另外,你最后会得到一个反向引用的名称冲突,因为Child和Parent将拥有相同的集合名称项。
您需要使用PolyModel来执行您想要的操作。
如果您刚开始,那么您应立即停止并转移到ndb。如果你有一个现有的代码库,那么请忽略这一点建议。