Google App Engine: PolyModel + SelfReferenceProperty

Может ли класс на основе 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()

Я выполняю этот код и проверяю хранилище данных через интерфейс администратора сервера разработки. Родительский экземпляр сохраняется в классе хранилища данных = 'BaseClass,ParentClass', а дочерний - нет. В браузер не выводится сообщение об ошибке (отладка включена) и ничего в журнале программы запуска моего приложения.

Возможно ли это сделать?

1 ответ

Это неправда, что я ничего не изменил здесь. Мне действительно пришлось изменить атрибут "parent" на "parent_ref". Кроме того, ссылки не работали, как я ожидал, пока я не изменил с SelfReferenceProperty на ReferenceProperty(Parent, collection_name = 'children')

Но конечным результатом является то, что полиморфная ссылка на себя работает.

Другие вопросы по тегам