gpt4 book ai didi

django - 在 django 中取消发布特定日期的文章

转载 作者:行者123 更新时间:2023-12-04 06:50:35 25 4
gpt4 key购买 nike

我有一个带有 pub_date 字段和 unpublish_date 字段的简单文章模型。

当 unpublish_date 过去时,有什么方法可以自动将我的 is_published 字段设置为 False?

class Article(models.Model):
title = models.CharField(max_length=500)
post = models.TextField(blank=True, null=True,)

pub_date = models.DateTimeField(default=datetime.datetime.now)
unpublish_date = models.DateTimeField(blank=True, null=True)
is_published = models.BooleanField(default=True,)

最佳答案

你可以简单地考虑这个 unpublish_date进入您的查询,例如:

articles_to_show = Articles.objects.filter(is_published=True,
unpublish_date__gt=datetime.date.today())

不过,这可能会使您的代码更加复杂。您必须重写所有查询以了解 unpublish_date .

Cron 适用于此类事情,但仅适用于每天一次或几次大批量更改内容。当您有大量任务要做或想要更细粒度的调度时,它不能很好地扩展。

如果每天通过 cron 运行一次任务就足够了,请执行此操作。不过,可能值得研究更高级的选项,例如消息队列。

要制作一个在精确时间运行的计划任务(如果有可用的工作人员),我将使用 Celery .
from celery.decorators import task

@task
def unpublish(article_pk):
article = Article.objects.get(pk=article_pk)
article.is_published = False
article.save()

# Unpublish article in exactly 7 days from now
from datetime import datetime, timedelta
unpublish.apply_async([article.pk], eta=datetime.now() + datetime.timedelta(7))

关于django - 在 django 中取消发布特定日期的文章,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3171709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com