2013-01-19 5 views
0

Je suis un problème avec AppEngine que je ne peux pas à comprendre:AppEngine NDB PolyModel obtenir des propriétés

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() 

Donc, en utilisant les classes ci-dessus, quand je fais une recherche pour tous ItemInHouse, puis je tente de accéder à ces iteminhouse qui ont un MedicalItem, je suis incapable d'obtenir med_sub_type. C'est:

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

génère une erreur au itm.item.med_sub_type. J'ai même essayé: itm.item._values["med_sub_type"].b_val mais ceci jette toujours une AttributeError: l'objet 'Item' n'a aucun attribut 'med_sub_type'. Je vois dans la propriété class_ il a les propriétés Item et MedicalItem, mais je suis incapable d'y accéder. Des idées?

Merci Jon

Répondre

2

Je crains que ce que vous essayez de faire peut-être pas possible - je ne pense pas que je l'avais prévu stocker les instances de PolyModel comme valeurs StructuredProperty. Est-ce que cela explique ce que vous voyez? Vous voudrez peut-être déposer une demande de fonctionnalité au pointeur de l'élément NDB, mais je ne peux pas promettre qu'il sera mis en œuvre.

+0

S'il y a assez de demande, je serais heureux de tenter de l'implémenter. – bossylobster

+0

Je pense que ce serait génial – Jon

Questions connexes