Выполните функцию модели, чтобы остановить подсчет
В приложении 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 или что-то другое, чтобы подтвердить, что встреча завершена