Удалить корзину покупок django

#django #django-models #django-views

#django #django-модели #django-просмотры

Вопрос:

как я могу автоматически удалить корзину покупок пользователя через определенное время (например, через один день)?

 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:

Вы можете удалить все Cart корзины через один день после создания с помощью:

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

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

Вы можете определить это в пользовательской команде django-admin [Django-doc]. Вы можете работать с сельдереем или другим механизмом очереди, чтобы запланировать периодическую задачу.

Вы также можете добавить updated поле, чтобы удалять только элементы в cas, которые больше не редактировались 24 часа назад:

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

Затем вы удаляете Cart s с помощью:

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

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

Комментарии:

1. люди из tnx за помощью