from django.core.cache import cache from django.db.models.signals import post_delete, post_save from django.dispatch import receiver from .models import Material CATEGORY_TREE_CACHE_KEY = 'material:category_tree:approved' def invalidate_category_tree_cache(): cache.delete(CATEGORY_TREE_CACHE_KEY) @receiver(post_save, sender=Material) def _on_material_saved(sender, instance, **kwargs): invalidate_category_tree_cache() @receiver(post_delete, sender=Material) def _on_material_deleted(sender, instance, **kwargs): invalidate_category_tree_cache()