【发布时间】:2015-01-31 10:53:10
【问题描述】:
我有一个适用于所有联系人的多模型
from google.appengine.ext import ndb
from google.appengine.ext.ndb import polymodel
class Contact(polymodel.PolyModel):
telephone = ndb.StructuredProperty(Telephone, repeated=True)
email = ndb.StructuredProperty(Email, repeated=True)
电话和电子邮件模型类有两个简单的StringProperty 属性:type 和value。
我有一个模型Person 使用这个多模型:
class Person(Contact):
name = ndb.StringProperty()
我想使用投影来减少输出量。所以当我查询父类的一个属性(即polymodel)时,比如:
qry = Person.query(projection=['telephone.value'])
一切正常。但是,如果我查询Person 类的属性,(两者之一)
qry = Person.query(projection=['name'])
qry = Person.query(projection=[Person.name])
我收到InvalidPropertyError: Unknown property name 异常。
这是 ndb 的错误,用于查看种类而不是实际类?
请让我知道是否有解决方法(当然一种方法是不使用多模型)。谢谢。
编辑:
下面我提出了一个更简单的模型(删除了StructuredProperty),它给出了同样的问题:
class Contact(polymodel.PolyModel):
telephone = ndb.StringProperty()
class Person(Contact):
name = ndb.StringProperty()
这行得通:
qry = Person.query(projection=['telephone'])
这不起作用:
qry = Person.query(projection=['name'])
【问题讨论】:
标签: python google-app-engine google-cloud-datastore app-engine-ndb