Срок действия объекта Story не истекает, когда пользователь публикует ленту историй

Как установить время истечения срока действия истории в определенное время, когда пользователи публикуют историю, Я работаю над проектом, где я хочу, чтобы пользователи могли публиковать историю в течение определенного периода времени, а затем она удаляется. Вот моя модель истории. На самом деле я не очень понимаю, как сделать так, чтобы срок действия истории, опубликованной пользователями, истекал в определенное время, например, через 48 часов сообщение должно быть удалено из ленты историй.

class StoryManager(models.Manager):
    def get_queryset(self, *args, **kwargs):
        return super().get_queryset(*args, **kwargs).filter(
            expire__lt=Now()
        )

class Story(models.Model):
    title = models.CharField(max_length=250)
    story = models.FileField(upload_to="stories",blank=True,null=True)
    user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
    images = models.ImageField(upload_to="ImageStorie", blank=True,null=True)
    created = models.DateTimeField(auto_now_add=True)
    expire = models.DateTimeField(db_index=True)
    likes = models.ManyToManyField(settings.AUTH_USER_MODEL,related_name="like")
    image_thumbnail = ImageSpecField(source='images', processors=[ResizeToFill(500, 300)],
                                    format="JPEG",
                                    options={'quality':100})


    objects = StoryManager()

Это мое представление для модели истории, но история не удаляется через 48 часов, когда она была опубликована? Кто-нибудь может любезно помочь мне с этим!

def storie(request):
    context = {}
    videos = Story.objects.filter(expire__lt=Now()).delete()
    context['video'] = videos
    return render(request,'feed/feed.html', context)

Сейчас ваше представление, по сути, отфильтровывает все экземпляры Story, которые старше Now(). Вы можете отфильтровать набор запросов по дельте до created, которая является временной меткой создания экземпляра истории.

# View

from datetime import datetime, timedelta

def storie(request):

    # Delta of 48 hours from creation
    time_delta = datetime.now() - timedelta(hours=48)

    # Apply filter to queryset
    videos = Story.objects.filter(created__lt=time_threshold)

    context = {
        'videos': videos
    }

    return render(request,'feed/feed.html', context)

Обратите внимание, что это удаляет все истории старше 48 часов из ленты историй / набора запросов. В базе данных они, конечно же, остаются постоянными.

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