我正在想办法改进我的代码。所以基本上有一个网站,用户可以做一些事件。我们给用户一些关于事件结果的总结,SLA就是其中之一。
如果我想计算事件SLA,我可以通过检索对象并从end_time中减去start_time来完成。
相关型号:
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函数?或者我如何改进我的代码?
提前谢谢。
在我看来,改进代码的最佳方法是使用自定义管理器。请参阅文档:
https://docs.djangoproject.com/en/dev/topics/db/managers/