AppEngine:查询具有<missing>值的记录的数据存储

Fed*_*les 23 python google-app-engine google-cloud-datastore

我在Google App Engine数据存储区中为我的数据库模型创建了一个新属性.

旧:

class Logo(db.Model):
  name = db.StringProperty()
  image = db.BlobProperty()
Run Code Online (Sandbox Code Playgroud)

新:

class Logo(db.Model):
  name = db.StringProperty()
  image = db.BlobProperty()
  is_approved = db.BooleanProperty(default=False)
Run Code Online (Sandbox Code Playgroud)

如何查询未设置'is_approved'值的徽标记录?我试过了

logos.filter("is_approved = ", None)
Run Code Online (Sandbox Code Playgroud)

但它不起作用.在数据查看器中,新字段值显示为.

max*_*axg 35

根据有关查询和索引的App Engine文档,对于没有属性值的实体和对其具有值的实体之间存在区别; 和"没有过滤属性的实体永远不会被查询返回".因此无法为这些旧记录编写查询.

一篇有用的文章是更新模型的模式,它说目前唯一支持查找缺少某些属性的实体的方法是检查所有这些属性.本文的示例代码显示了如何遍历大量实体并更新它们.

  • Google的Marzia已确认无法查询缺失值. (4认同)