我有db.Model,它有几个属性,如下所述:
class Doc(db.Model):
docTitle = db.StringProperty(required=True)
docText = db.TextProperty()
docUser = db.UserProperty(required=True)
docDate = db.DateTimeProperty(auto_now_add=True)
在模板中,我只列出这些文档的名称作为链接。为此,我使用以下查询:
docList = Doc.gql("WHERE docUser = :1 ORDER BY docDate DESC", user)
如您所见,docList包含所有属性(包括“TextProperty”)。但是,我只是在我的视图中使用它的docTitle和key()。
是否有另一种方法可以只检索模型类的请求属性?
如果没有,我是否应该使用PolyModel类通过为docText属性创建另一个模型类来区分Doc模型类的列表和实际用法?
编辑:我在谷歌应用引擎中使用webapp web框架......
答案 0 :(得分:1)
实体作为序列化协议缓冲区存储在App Engine数据存储区中,这些缓冲区作为单个blob返回,因此无法仅检索其中的一部分。在任何情况下,这只会节省数据存储区和应用程序之间的RPC开销,因此节省的成本很低。
如果每个实体的大小很重要,您可能需要按照建议将模型分开。但是,您不需要(也可能不应该)使用PolyModel - 只需使用两个模型类,即'summary'和'detail'。