Как кэшировать динамическое содержимое с помощью кэширования на основе сигналов?

У меня есть приложение для отслеживания расходов, где я отображаю список категорий расходов, которые могут быть изменены пользователем. Поэтому я пытаюсь кэшировать данные следующим образом:

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')

Но страница отображает новые категории только после удаления одной из старых категорий. Как я могу это исправить?

Вернуться на верх