我在Google App Engine数据存储中为我的db模型创建了一个新属性。
旧的:
class Logo(db.Model):
name = db.StringProperty()
image = db.BlobProperty()
新的:
class Logo(db.Model):
name = db.StringProperty()
image = db.BlobProperty()
is_approved = db.BooleanProperty(default=False)
如何查询没有设置“是否已审核”值的徽标记录? 我试过了
logos.filter("is_approved = ", None)
但没用。 在数据查看器中,新字段值显示为。
也许这已经改变了,但我可以根据null字段筛选记录。
当我尝试GQL查询
SELECT * FROM Contact WHERE demo=NULL
时,它只返回缺少demo字段的记录。根据文件http://code.google.com/appengine/docs/python/datastore/gqlreference.html:
我不确定“null”是否与“missing”相同:在我的例子中,这些字段已经存在于我的模型中,但在创建时没有填充。也许Federico你可以告诉我们空查询在你的特定情况下是否有效?
根据Queries and Indexes上的App Engine文档,属性值为no的实体与属性值为null的实体之间存在区别;并且“没有筛选属性的实体永远不会被查询返回”。因此无法为这些旧记录编写查询。
一篇有用的文章是Updating Your Model's Schema,它指出,当前唯一支持的查找缺少某些属性的实体的方法是检查所有这些实体。本文的示例代码展示了如何遍历一组大型实体并更新它们。
相关问题 更多 >
编程相关推荐