Как добавить логику в геттер модели, использующий наследование?

У меня есть модель для задачи

class Task(BaseTask):
  class Meta:
    db_table = 'task'
    verbose_name_plural = 'Tasks'

  def __str__(self):
    return f'Task {self.id}'

  def __unicode__(self):
    return f'Task {self.id}'

который наследуется от BaseTask

class BaseTask(BaseModel):
  class Meta:
    abstract = True

  task_status = models.CharField(
    choices=TASK_STATUS_CHOICES, blank=True, max_length=200, default=WAITING
  )
  expiration_date = models.DateTimeField(blank=True, null=True, default=None)

Я хочу, чтобы task_status для Task возвращал FAILED, если текущая дата истекла. Я подумал, что могу добавить геттер к Task, например:

def get_task_status(self):
    return FAILED if self.expiration_date and \
        check_task_is_expired(self) else self.task_status

, но это, похоже, не работает. Как я могу добавить логику в task_status, чтобы она возвращала FAILED после истечения срока действия? Я знаю о @property, но другие модели зависят от BaseTask и Task, поэтому я не хочу менять имя поля.

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