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

Vin*_*gen 3 python google-app-engine app-engine-ndb

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

我的想法是这样的:

ndb.delete_multi(ndb.Model.query(ancestor=key).iter(keys_only = True))
Run Code Online (Sandbox Code Playgroud)

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

我还想在删除实体时删除BlobKeyProperties.为此,我在考虑:

@classmethod
  def _post_delete_hook(cls, key, future):
  # inform someone they have lost a friend
Run Code Online (Sandbox Code Playgroud)

我应该使用哪个级联删除?

Tim*_*man 6

对于无用的祖先查询,从查询类创建查询

ndb.delete_multi(ndb.Query(ancestor=key).iter(keys_only = True))
Run Code Online (Sandbox Code Playgroud)

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