我有一个模型,代表从运动开始的持续时间:
class Time(models.Model):
# A participator of a race
bib = models.ForeignKey(Bib, on_delete=models.CASCADE)
# A timing point. Could be one at 0km, 5km and at the goal
timing_point = models.ForeignKey(TimingPoint, on_delete=models.CASCADE)
# The duration from start
time = models.FloatField()
Run Code Online (Sandbox Code Playgroud)
我想计算每个围兜的两个计时点之间的持续时间。结果应该是一个查询集,每个号码布一行。我认为如果数据获取和持续时间计算可以在一个数据库查询中完成,那将是最有效的。这可以做到吗?如何做到?
为了澄清目标,我现在这样做(删除了异常处理):
times = []
for bib in bibs:
from_time = Time.objects.get(timing_point=from_point, bib=bib)
to_time = Time.objects.get(timing_point=to_point, bib=bib)
times.append({'bib': bib, 'time': to_time.time - from_time.time, })
Run Code Online (Sandbox Code Playgroud)
我想避免多次访问数据库,并且我更希望结果是一个 QuerySet,因为我希望能够执行其他操作,例如排序。