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

时间:2018-09-26 19:40:24

标签: python django 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

1 个答案:

答案 0 :(得分:1)

首先,该默认设置不会满足您的期望。它将在加载时运行一次。您需要将其转换为一个单独的函数,并将该函数本身传递给默认值(lambda可以在此处使用,但根据我所读的内容,显然不建议这样做)。

就芹菜而言,您可以设置celery beat任务运行(每天或任何适合您的目的),查询要标记为可用和尚未使用的情节,然后将其标记为可用。

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