15

在我的应用程序中,我需要删除一些模型属性。
我检查了这个链接,但第一个问题是属性在 a 上polymodel,我暂时无法切换到 anexpando来删除属性,我什至不知道如果我将 a 更改polymodel为 an会发生什么expando

那么如何从现有实体中删除属性?

我正在考虑将所有设置StringPropertyNone然后从模型架构中删除并重新部署。其中一个属性是 a BooleanProperty,我无法将其设置为None正确的?!或ndb.PickleProperty...我应该如何删除它?

有人知道如何正确完成这项工作吗?

4

1 回答 1

41

如果要更新所有实体,推荐的方法是读取和重写所有实体的 map/reduce 作业;但是它可能不值得,这取决于你有多少数据——map/reduce 也不是免费的。

还要确保在一小部分数据上测试 map/reduce 作业。真正从实体中删除属性是非常微妙的,即使它不再在模型类中!最好的方法可能是:

if 'propname' in ent._properties:
  del ent._properties['propname']
  ent.put()
于 2012-10-03T02:32:46.257 回答