删除购物车django

时间:2020-10-29 21:09:01

标签: django django-models django-views

如何在特定时间(例如一天后)之后自动删除用户的购物车?

my view:
   def remove_cart(request, id):
     url = request.META.get('HTTP_REFERER')
     Cart.objects.get(id=id).delete()
     return redirect(url)

my models :

   class Cart(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    variant = models.ForeignKey(Variants, on_delete=models.CASCADE)
    quantity = models.PositiveIntegerField()
    create = models.DateTimeField(auto_now_add=True)

1 个答案:

答案 0 :(得分:0)

创建后一天,您可以使用以下方法删除所有Cart

from django.utils.timezone import now
from datetime import timedelta

Cart.objects.filter(
    create__lte=now()-timedelta(days=1)
).delete()

您可以在custom django-admin command [Django-doc]中进行定义。您可以将 celery 或其他队列机制用于schedule a periodic task

您还可以添加一个updated字段以仅删除cas中24小时前不再编辑的元素:

class Cart(models.Model):
    # …
    update = models.DateTimeField(auto_now=True)

然后您使用以下命令删除Cart

from django.utils.timezone import now
from datetime import timedelta

Cart.objects.filter(
    update__lte=now()-timedelta(days=1)
).delete()