如何删除包含所有子项的实体

时间:2013-05-15 23:34:19

标签: python google-app-engine app-engine-ndb

我想对数据存储区中的实体进行级联删除。我的意思是所有的孩子和间接孩子也将被删除。我最初认为这将是默认行为,但不知何故它不是......

我的想法是这样的:

ndb.delete_multi(ndb.Model.query(ancestor=key).iter(keys_only = True))

但是Model应该是一个通配符,因为该实体可以是几个类的父...

我还想在删除实体时删除BlobKeyProperties。对此,我在想 约:

@classmethod
  def _post_delete_hook(cls, key, future):
  # inform someone they have lost a friend

我应该用它来进行级联删除吗?

1 个答案:

答案 0 :(得分:6)

对于无用的祖先查询,请从query class

创建查询
ndb.delete_multi(ndb.Query(ancestor=key).iter(keys_only = True))

我不会对所有子实体使用级联删除。如果你有很多,那么它会慢得多(除非你想在任务中运行删除)。