Как кэшировать динамическое содержимое с помощью кэширования на основе сигналов?
У меня есть приложение для отслеживания расходов, где я отображаю список категорий расходов, которые могут быть изменены пользователем. Поэтому я пытаюсь кэшировать данные следующим образом:
class ShowCategories(LoginRequiredMixin, ListView):
paginate_by = 10
model = Category
context_object_name = 'categories'
template_name = 'expense_tracker/category_list.html'
def get_queryset(self):
category = cache.get('category')
if category is None:
category = Category.objects.filter(user=self.request.user)
cache.set('category', category)
return category
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['title'] = 'Категории'
return context
И я использую сигналы для аннулирования кэша:
@receiver(post_delete, sender=Category)
def category_post_delete_handler(sender, **kwargs):
cache.delete('category')
@receiver(post_save, sender=Category)
def category_post_save_handler(sender, **kwargs):
cache.delete('category')
Но страница отображает новые категории только после удаления одной из старых категорий. Как я могу это исправить?