我有一个这样的模型:
class Users(db.Model):
email = db.EmailProperty(required=True, indexed=True)
user_name = db.StringProperty(required=True, indexed=True)
api_key = db.StringProperty(required=False, indexed=False)
active = db.BooleanProperty(required=True, indexed=False)
real_name = db.StringProperty(required=False, indexed=False)
...etc
当我尝试进行这样的查询时:
user = db.GqlQuery("SELECT email, api_key, active FROM Users WHERE user_name = :1", username).get()
它返回None,但是当我使用此查询时:
user = db.GqlQuery("SELECT * FROM Users WHERE user_name = :1", username).get()
没关系,退货。但为什么我不能使用第一个查询?
答案 0 :(得分:7)
您无法投影未编入索引的属性。如documentation
中所述可投射的属性有一些限制: 您只能投影索引属性。这意味着不支持将Text,Blob或其他明确标记为未索引的属性投影。
您可以在管理控制台的数据存储查看器中查找运行查询所需的索引。