如何继承数据库.ReferenceProperty on Google App Engine.



我的数据存储中有这样的东西:

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。 如果你有一个现有的代码库,那么忽略这一点建议。

最新更新