AppEngine NDB PolyModel获取属性

时间:2013-01-19 21:50:28

标签: python app-engine-ndb polymodel

我遇到了一些我似乎无法弄清楚的发动机问题:

from google.appengine.ext import ndb
from google.appengine.ext.ndb import polymodel

class Item(polymodel.PolyModel):
      name = ndb.StringProperty()
      type = ndb.StringProperty(choices=["Medical","Food"])
      sub_category_type = ndb.StringProperty()
      sub_category_sub_type = ndb.StringProperty()

class MedicalItem(Item):
      med_sub_type = ndb.StringProperty()
      can_split_item = ndb.BooleanProperty()

class ItemInHouse(ndb.Model):
      item = ndb.StructuredProperty(Item)
      amount_of_item = ndb.FloatProperty()

所以使用上面的类,当我查询所有ItemInHouse,然后我尝试访问那些有一个MedicalItem的iteminhouse时,我无法获得med_sub_type。那就是:

itms = ItemInHouse.query(ItemInHouse.item.type == "Medical").fetch()
for itm in itms:
    self.response.out.write(itm.item.med_sub_type)

在itm.item.med_sub_type处引发错误。我甚至尝试过:itm.item._values["med_sub_type"].b_val但这仍然会引发一个AttributeError:'Item'对象没有属性'med_sub_type'。我确实在class_属性中看到它有ItemMedicalItem属性,但我无法访问它。有什么想法吗?

由于 乔恩

1 个答案:

答案 0 :(得分:2)

我担心你想要做的事情可能无法实现 - 我认为我没想到将PolyModel实例存储为StructuredProperty值。这可以解释你所看到的吗?您可能希望在NDB项目跟踪器上提交功能请求,但我不能保证它将被实现。