Удаление записи из базы данных по истечении срока действия сессии

Моя корзина работает на основе сессий и модели 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 соответствует имени сессии.

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