Django приложение для морозильной камеры - Проверка временной дельты

Я работаю над проектом по организации морозильной камеры. Поэтому я добавил модель под названием 'ShoppingItem'. У него есть дата 'best before'. Теперь я хочу проверить три вещи с помощью функции:

Просрочен ли срок годности продуктов? Продукты в порядке? Или пища "критическая" (за 3 дня до истечения срока годности)

Вот весь мой models.py. Он включает в себя саму модель и две функции.

введите описание изображения здесь

введите описание изображения здесь

Я пробовал на просроченной функции, но не могу прийти к решению

В вашем условии elif допущена ошибка. Вы прошли

def expired(self):
    if self.best_before_date > datetime.date.today():
        return 'fine'
    elif self.best_before_date >= datetime.date.today() and
            self.best_before_date >= datetime.date.today() + datetime.timedelta(days=3):
        return 'critical'
    else:
        return 'expired'

Но правильным будет self.best_before_date <= datetime.date.today() + datetime.timedelta(days=3), потому что вам нужна дата больше, чем сегодня, но меньше или равна, чем сегодня + 3 дня.

Я думаю, что это правильная логика:

def expired(self):
    three_days_before = datetime.date.today() - datetime.timedelta(days=3)
    if self.best_before_date < three_days_before:
        return 'fine'
    elif three_days_before <= self.best_before_date <= datetime.date.today():
        return 'critical'
    # after expiration date
    else:
        return 'expired'

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