我将缩略图72x72编码的base64存储在ndb.TextProperty()
中模型结构类似于:
class Article(ndb.Model):
title = ndb.StringProperty()
body = ndb.TextProperty()
tags = ndb.StringProperty(repeated=True, indexed=True)
thumbnail = ndb.TextProperty()
has_thumbnail = ndb.ComputedProperty(
lambda self: True if self.thumbnail else False)
enable = ndb.BooleanProperty(default=True)
使用投影进行查询的方法是:
@classmethod
def get_articles(cls):
q = Aricle.query(
True == Article.enable,
projection = [
Article.title
Article.has_thumbnail
])
return q.get()
由于ndb.TextProperty()
未编入索引,因此我无法在预测中获取它们,因此我尝试使用ndb.ComputedProperty
并注意到它正在运行。
我的主要问题是要知道这是否是一种正确的查询方式,基本上我只想要一个查询来返回文章的标题和缩略图,或者知道文章是否有缩略图。
答案 0 :(得分:2)
这是正确的,计算属性将适用于投影查询。
唯一需要注意的是,查询将使用持久保存到数据存储的计算属性值。因此,如果您刚刚添加了计算属性,则它将不会出现在先前添加的实体的数据存储中;你需要重新设置这些实体以保留新的属性。