如何在特定时间(例如一天后)之后自动删除用户的购物车?
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)
答案 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()