Django Как обновить иконку корзины сессии после удаления товара администратором

У меня есть два приложения в моем проекте одно это call store и другое call cart в store у меня есть все модели и в cart у меня есть весь функционал корзины. Вызов обрабатывается с помощью сессии, когда администратор удаляет продукт, количество значков в корзине выглядит так, как если бы продукт не был удален из сессии, однако в сводке html отображаются права на продукты в корзине (он не включает удаленный, но значок корзины показывает количество, которое неправильно). как я могу обновить значок с правильным количеством после удаления продукта администратором, корзина должна быть обновлена, и я использовал сигнал post_delete для этого, но это, кажется, не работает.

это мой код

cart/signals.py

from django.db.models.signals import post_delete
from django.dispatch import receiver
from store.models import Product
from django.contrib.sessions.models import Session

@receiver(post_delete, sender=Product)
def update_cart_on_product_delete(sender, instance, **kwargs):
    # Get all sessions
    sessions = Session.objects.all()

    for session in sessions:
        cart = session.get_decoded().get('cart', {})

        if cart:
            # Check if the deleted product is in the cart
            if str(instance.id) in cart:
                del cart[str(instance.id)]

                # Save the updated cart back to the session
                session.get_decoded()['cart'] = cart
                session.save()

В стандартных шаблонах Django нет динамического повторного отображения при изменении модели. Вы можете использовать WebSockets для этой функциональности. Посмотрите на этот пример с Channels

Я думал, что сокет используется для связи. Не уверен, но, согласно Google, лучший способ достичь этого - использовать сигнал, и это то, что я пытаюсь сделать, но мой сигнал не работает.

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