【问题标题】:How to delete an entity including all children如何删除包括所有子项的实体
【发布时间】:2013-05-10 17:06:18
【问题描述】:

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

我的想法是这样的:

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

我也应该将其用于级联删除?

【问题讨论】:

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


    【解决方案1】:

    对于不友好的祖先查询,从 query class 创建查询

    ndb.delete_multi(ndb.Query(ancestor=key).iter(keys_only = True))
    

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

    【讨论】:

    • 谢谢!这是一个CMS的后端,所以我认为它会管理。孤儿在我的应用程序中没有用,因为它们永远不会显示...
    • 请记住,此查询“将检索指定的祖先及其所有后代”。小心,如果意图是删除 only 个孩子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 2011-11-11
    • 2020-03-29
    • 1970-01-01
    相关资源
    最近更新 更多