我的数据存储中有这样的东西:
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 正在查询数据存储中ref_key
等于 referenced.key()
的 Parent
个实例,显然数据存储中没有Parent
实例,因此它返回一个空列表。
所以我的问题,这是一个错误吗?或者也许我做错了什么。有没有办法实现这种行为?
谢谢!
这不是错误。其他明智的做法是,您最终会为反向引用发生名称冲突,因为子项和父项将具有相同的集合名称项。
您需要使用PolyModel来执行所需的操作。
如果您正在开始,那么您应该立即停止并转到ndb。 如果你有一个现有的代码库,那么忽略这一点建议。