我制作了一个带有ndb模型的Google应用程序。它看起来有点像树结构。当根被删除时,我想要删除所有的模型,而不仅仅是分支的第一个杠杆。
示例:
Company
Order
Item
...
Contact
Pet当我删除一个模型,我希望所有的模型取决于它也被删除。我想我可以用_pre_delete_hook或_post_delete_hook来做。在本例中,当我删除订单时,我使用钩子删除所有项目。如果我删除了整个公司,我就删除所有订单和联系人。这些型号的删除钩子不会触发。数据仍然存在。
发布于 2017-05-18 22:18:38
使用_pre_delete_hook或_post_delete_hook有什么好处?似乎会降低您的代码的可读性,并且对Google代码更新有些脆弱。我总是紧张地使用以下划线开头的方法。
相反,只需为实体创建自己的delete方法:
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()https://stackoverflow.com/questions/44053787
复制相似问题