Django - обновить значение поля через 7 дней с помощью сельдерея - PullRequest
0 голосов
/ 26 сентября 2018

My today Вопрос в том, как я могу изменить значение поля через 7 дней, используя Celery

Мои модели:

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

Поэтому я хочу обновить доступность до true, если сегодня дата (толькодата не час) = Availability_Free_users

1 Ответ

0 голосов
/ 27 сентября 2018

Во-первых, это значение по умолчанию не будет делать то, что вы ожидаете.Он будет запущен один раз во время загрузки.Вам нужно будет превратить ее в отдельную функцию и передать саму функцию по умолчанию (лямбда работает здесь, но, очевидно, не рекомендуется, исходя из того, что я прочитал).

Что касается сельдерея, вы можете установитьдо выполнения задачи celery beat (ежедневно или независимо от ваших целей), которая запрашивает эпизоды, которые должны быть помечены как доступные и не были, затем помечает их как доступные.

Примечаниечто вы можете сделать это полностью с помощью одного фильтра наборов запросов и цепочки обновлений, но если вы это сделаете, любые сигналы, которые у вас есть в этой модели, не сработают.Чтобы это произошло, вам нужно выполнить итерацию по набору запросов и сохранить изменения непосредственно для каждой модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...