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'