【发布时间】:2019-05-13 21:19:01
【问题描述】:
我有一个模型,它表示从运动开始的持续时间:
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()
我想计算每个围兜的两个时间点之间的持续时间。结果应该是一个 QuerySet,每个围兜有一行。我认为如果数据获取和持续时间计算可以在一个数据库查询中完成,那将是最有效的。这可以做到吗?如何做到?
为了明确目标,我现在是这样做的(删除了异常处理):
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, })
我想避免多次访问数据库,我希望结果可以是 QuerySet,因为我希望能够执行其他操作,例如排序。
【问题讨论】:
-
你使用的是哪个 Django 版本?
-
@WillemVanOnsem 我正在使用 Django 2.2。我会尽快尝试您建议的解决方案,但它看起来很有希望。非常感谢。