#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 за помощью