Django - перебор записей и обновление базы данных при определенных условиях с помощью запланированного задания
Как запустить запланированную задачу из примера файла задач scheduled_task.py для доступа к файлу models.py (например, Event) и при выполнении определенных критериев обновить одно из полей в базе данных (пример: event_status)?
models.py
class Events(models.Model):
event_title = models.CharField(max_length=300)
event_info = models.TextField(max_length=2000)
event_date = models.DateField(default=now)
event_time = models.TimeField(default='00:00')
event_location = models.CharField(max_length=150)
event_status = models.CharField(max_length=30, choices=EVENT_STATUS_CHOICES, default='New Event')
def save(self, *args, **kwargs):
if date.today() > self.event_date:
self.event_status = 'Completed Event'
super(Events, self).save(*args, **kwargs)
Каким должен быть код, чтобы перебрать все события из базы данных и обновить запись?
scheduled_task.py
from models import Events
def verify_events():
all_events = Events.objects.all()
for event in all_events:
if event.event_date < date.today():
event.event_status = 'Completed Event'
event.save()
Код выполняется, но ничего не происходит (нет ошибки), db не обновляется с изменениями. Текущая функция save() для Events в models.py выполняет работу, когда вы обновляете страницу, она запускает функцию save(), но я хочу, чтобы она всегда обновлялась без обновления страницы вручную для запуска функции save() - чтобы это происходило в течение ночи (я использую Tasks в PythonAnywhere).
Неправильно ли event.save()
? Не сохраняется при интеграции через События?
Спасибо за помощь