Удаление записи из базы данных по истечении срока действия сессии
Моя корзина работает на основе сессий и модели Cart
. Когда товар добавляется в корзину, создается сессия и товар добавляется в модель Cart
.
Удаление товара из корзины обрабатывается этой функцией:
def remove_cart(request, slug):
cart_id = request.session['cart_id']
cart = Cart.objects.get(id=cart_id)
try:
product = Product.objects.get(slug=slug)
cart.products.remove(product)
cart.total -= product.price
cart.save()
except Product.DoesNotExist:
pass
except:
pass
if cart.products.count() < 1:
cart.delete()
return HttpResponseRedirect(reverse("cart"))
Когда пользователь удаляет все товары из корзины, запись удаляется из базы данных, чтобы она не хранила пустые записи.
Проблема возникает, когда пользователь оставляет товары в корзине и сессия истекает (например: пользователь вышел из системы). Запись остается в базе данных и никогда больше не будет использоваться, поэтому она просто занимает место.
Что нужно сделать, чтобы удалить модель Cart
, когда сессия истекла? Cart id
соответствует имени сессии.