Какой способ расчета SLA является наиболее эффективным?
Я пытаюсь понять, как я могу улучшить свой код. В принципе, есть сайт и есть некоторые события, которые пользователь может сделать. Мы предоставляем пользователю некоторую сводку о результате события, и SLA является одним из них.
Если я хочу рассчитать SLA события, я могу сделать это, получив объект и вычтя время начала_времени из времени окончания.
Сопутствующая модель:
class Event(models.Model):
...
start_time = models.DateTimeField()
end_time = models.DateTimeField()
user = models.ForeignKey(User, on_delete=models.CASCADE)
...
Ниже приведен мой код для расчета SLA.
events = Event.objects.all()
tmp_sla = 0
for event in events:
time_difference = event.end_time - event.start_time
tmp_sla += time_difference // 60 # convert seconds to minute
average_sla = tmp_sla // events.count()
Проблема в том, что есть очень много событий и много пользователей. Это приводит к длительному времени вычисления. И иногда мне приходится использовать более одного цикла for для вычисления. Время вычисления становится еще больше.
Есть ли какая-нибудь встроенная функция Django для этого? Или как я могу улучшить свои коды?
Заранее спасибо.
На мой взгляд, лучший способ улучшить ваш код - использовать пользовательский менеджер. Смотрите документацию: