Выполните функцию модели, чтобы остановить подсчет

В приложении django у меня есть модельная функция, которая подсчитывает прогресс события между полями дата-время. Возможно ли остановить прогресс после достижения 100. Например:

models.py

start_appointment = models.DateTimeField(default=timezone.now, blank=True)
end_appointment = models.DateTimeField(default=timezone.now, blank=True)

модельная функция

def get_progress(self):
  if (self.status) == 'New' or (self.status) == 'Finished':
    now = timezone.now()
    progress = ((timezone.now() - self.start_appointment) / ((self.end_appointment - now) + (now - self.start_appointment)))*100
      if progress > 100.0:
         ...
      return progress

Спасибо

Просто используйте функцию Python min(). Она вернет ваш расчет прогресса или 100, если расчет прогресса больше.

def get_progress(self):
  if (self.status) == 'New' or (self.status) == 'Finished':
    now = timezone.now()
    progress = min(((timezone.now() - self.start_appointment) / ((self.end_appointment - now) + (now - self.start_appointment)))*100, 100)
      return progress
def get_progress(self):
  return ((timezone.now() - self.start_appointment) / ((self.end_appointment - now) + (now - self.start_appointment)))*100

def other_process():
  while self.get_progress() < 100:
    Do stuff here...
  return progress

Это вернет прогресс, когда встреча закончится. Возможно, вы захотите вернуть True или что-то другое, чтобы подтвердить, что встреча завершена

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