我使用ndb-models制作了一个Google App Engine应用程序。它有点像树状结构。 我想在删除根时删除所有模型,而不仅仅是分支的第一个杠杆。
示例:
Company
Order
Item
...
Contact
Pet
当我删除模型时,我希望删除所有依赖它的模型。 我以为我可以用_pre_delete_hook或_post_delete_hook来做。 在我删除订单的示例中,我使用挂钩删除所有项目。 如果我删除整个公司,我会删除所有订单和联系人。这些模型的删除挂钩不会触发。数据仍然存在。
答案 0 :(得分:2)
使用_pre_delete_hook
或_post_delete_hook
有什么好处?似乎使您的代码可读性降低,并且有点容易受到Google代码更新的影响。我总是很紧张地使用以下划线开头的方法。
相反,只需为实体创建自己的删除方法:
class Company(ndb.Model):
def delete(self):
for order in Order.query(Order.company_key == self.key)):
order.delete()
self.key.delete()
class Order(ndb.Model):
def delete(self):
for item in Item.query(Item.order_key == self.key)):
item.delete()
self.key.delete()