python - Django - 使用 Celery 7 天后更新字段值

标签 python django celery

我今天的问题是如何使用 Celery 7 天后更改字段的值

我的模型:

class Episode(models.Model):
    availability_free_users = models.DateTimeField(default=datetime.now()+timedelta(days=7))
    availability = models.BooleanField(default=False)

因此,如果今天日期(仅日期而不是小时)=availability_free_users,我想将可用性更新为 true

最佳答案

首先,默认值不会达到您的预期。它将在加载时运行一次。您需要将其变成一个单独的函数,并将函数本身传递给默认值(lambda 在这里可以工作,但根据我所读到的内容,显然不推荐)。

就celery而言,可以设置celery beat任务运行(每天或任何适合您的目的),查询应标记为可用但尚未标记为可用的剧集,然后将它们标记为可用。

请注意,您可以完全使用一个查询集过滤器和更新链来完成此操作,但如果您这样做,则不会触发此模型上的任何信号。为此,您需要迭代查询集并将更改直接保存在每个模型上。

关于python - Django - 使用 Celery 7 天后更新字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52524996/

相关文章:

python - 追加元组的元组

Django 表单验证默认值错误

amazon-web-services - 在与生产环境相同的服务器中运行 RabbitMQ+Celery

python - 如何使用 Celery 制作包含所有待处理任务的仪表板?

python - 将数据转换为分位数 bin

python - 不同操作系统导入模块的路径是否不同?

python - 在 python 中加载模块范围的配置

带有 django-nose : two identical settings files with different behavior in running test command 的 Django

Python 和 curl 问题

python - Django celery 在检查数据是否准备好时总是返回 false