Запланированные задачи в 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. Ее описание довольно точно: "попытка относительного импорта без известного родительского пакета"