位于 _pre_delete_hook 或 _post_delete_hook
Nestled _pre_delete_hook or _post_delete_hook
我用 ndb-models 制作了一个 Google App Engine 应用程序。它有点像树结构。
我想在删除根时删除所有模型,而不仅仅是分支的第一个杠杆。
示例:
Company
Order
Item
...
Contact
Pet
当我删除一个模型时,我希望所有依赖它的模型也被删除。
我以为我可以用 _pre_delete_hook 或 _post_delete_hook 来完成。
在删除订单的示例中,我使用挂钩删除了所有项目。
如果我删除整个公司,我会删除所有订单和联系人。这些模型的删除挂钩不会触发。数据保留。
使用 _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()
我用 ndb-models 制作了一个 Google App Engine 应用程序。它有点像树结构。 我想在删除根时删除所有模型,而不仅仅是分支的第一个杠杆。
示例:
Company
Order
Item
...
Contact
Pet
当我删除一个模型时,我希望所有依赖它的模型也被删除。 我以为我可以用 _pre_delete_hook 或 _post_delete_hook 来完成。 在删除订单的示例中,我使用挂钩删除了所有项目。 如果我删除整个公司,我会删除所有订单和联系人。这些模型的删除挂钩不会触发。数据保留。
使用 _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()