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, лучший способ достичь этого - использовать сигнал, и это то, что я пытаюсь сделать, но мой сигнал не работает.