gpt4 book ai didi

python - 谷歌应用引擎中的递归删除

转载 作者:太空狗 更新时间:2023-10-29 22:17:26 26 4
gpt4 key购买 nike

我正在将 google app engine 与 django 1.0.2(和 django-helper)一起使用,想知道人们是如何进行递归删除的。假设您有一个类似这样的模型:

class Top(BaseModel):    passclass Bottom(BaseModel):    daddy = db.ReferenceProperty(Top)

现在,当我删除“顶部”类型的对象时,我希望所有关联的“底部”对象也被删除。

就像现在一样,当我删除“顶部”对象时,“底部”对象会保留下来,然后我得到不属于任何地方的数据。在 View 中访问数据存储时,我最终得到:

Caught an exception while rendering: ReferenceProperty failed to be resolved.

我当然可以找到所有对象并删除它们,但由于我的真实模型至少有 5 层深,我希望有一种方法可以确保这可以自动完成。

我找到了这个 article关于它如何与 Java 一起工作,这似乎也是我想要的。

任何人都知道我如何在 Django 中获得这种行为?

最佳答案

您需要通过查找受影响的记录并在删除父记录的同时删除它们来手动实现此操作。如果愿意,您可以通过重写父类上的 .delete() 方法来简化此操作,以自动删除所有相关记录。

出于性能原因,您几乎肯定希望使用仅键查询(允许您获取要删除的实体的键,而无需获取和解码实际实体)和批量删除。例如:

db.delete(Bottom.all(keys_only=True).filter("daddy =", top).fetch(1000))

关于python - 谷歌应用引擎中的递归删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1054868/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com