Запланированные задачи в Django для обновления данных в моделях (базе данных)

Мне нужно запланировать задачи через Pythonanywhere, чтобы обновить некоторые записи в моей базе данных. В качестве примера, у меня есть события в качестве моделей:

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')

Также внутри этого класса Events в models.py у меня есть следующее:

def save(self, *args, **kwargs):
        if date.today() > self.event_date:
            self.event_status = 'Completed Event'
        super(Events, self).save(*args, **kwargs)

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

Путем планирования задач в PA на ночь, итерации по всем Событиям, и если они в прошлом, изменения их статуса.

Я создал нижеприведенный файл и загрузил его в PA Tasks.

tasks.py

from .models import Events
from datetime import date

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()

При выполнении задания я получил ошибку от PA:

Traceback (most recent call last):
  File "/home/xxxxx/XXXXXXX/xxxxxx/tasks.py", line 1, in <module>
    from .models import Events
ImportError: attempted relative import with no known parent package

2022-10-24 23:30:30 -- Completed task, took 14.35 seconds, return code was 1.

Похоже, что tasks.py не смог прочитать его из базы данных (->import from Models). Как лучше всего настроить задачи PA на выполнение и запись в базу данных?

ImportError не имеет никакого отношения к базе данных, это ошибка Python, возникшая в вашей строке 1. Ее описание довольно точно: "попытка относительного импорта без известного родительского пакета"

Вернуться на верх