Reputation: 510
I've made an Google App Engine Application with ndb-models. It kind of looks like a tree-structure. I want to delete all models when a root is deleted, not only the first lever of branches.
Example:
Company
Order
Item
...
Contact
Pet
When I delete a model, I want all models depending on it to be deleted as well. I thought i could do it with _pre_delete_hook or _post_delete_hook. In the example when I delete an Order I delete all Items using a hook. If I delete a whole Company, i delete all Orders and Contacts. The delete-hooks for those models don't trigger. The data remain.
Upvotes: 0
Views: 132
Reputation: 16563
What is the benefit of using _pre_delete_hook
or _post_delete_hook
? Seems to make your code less readable and somewhat vulnerable to Google code updates. I'm always nervous to use methods that start with underscores.
Instead, just create your own delete method for an entity:
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()
Upvotes: 2