2010-04-14 4 views
1

Является ли класс на основе PolyModel, который может использоваться как свойство SelfReferenceProperty?Google App Engine: 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', но ребенок не является. В браузере нет выхода ошибки (отладка включена) и ничего в журнале запуска для моего приложения.

Это можно сделать?

+0

Странный - без изменения какого-либо дополнительного кода, теперь он работает ... необъяснимой тайной. – rvandervort

+0

Можете ли вы отметить его как закрытый? –

ответ

0

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

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