Google App Engine:PolyModel + SelfReferenceProperty

时间:2010-04-14 00:19:35

标签: python google-app-engine polymodel

基于PolyModel的类是否可以用作SelfReferenceProperty?

我有以下代码:

class BaseClass(polymodel.PolyModel):
    attribute1 = db.IntegerProperty()
    attribute2 = db.StringProperty()

class ParentClass(BaseClass):
    attribute3 = db.StringProperty()

class ChildClass(BaseClass):
    parent = db.SelfReferenceProperty(collection_name = 'children')


p = ParentClass()
p.attribute1 = 1
p.attribute2 = "Parent Description"
p.attribute3 = "Parent additional data"
p.put()

c = ChildClass()
c.attribute1 = 5
c.attribute2 = "Child Description"
c.parent = p.key()
c.put()

我执行此代码并通过开发服务器的管理界面检查数据存储区。 父实例保存到数据存储类class ='BaseClass,ParentClass',但子节点不是。浏览器没有输出错误(调试已打开),并且启动器的日志中没有任何内容用于我的应用程序。

这可能吗?

1 个答案:

答案 0 :(得分:0)

说我在这里没有改变是骗人的谎言。我实际上必须将“父”属性更改为“parent_ref”。在我从SelfReferenceProperty更改为ReferenceProperty(Parent,collection_name ='children')之前,引用也没有按预期工作

但最终结果是多态自引用确实有效。