我的目标似乎很简单:显示外部模型特定字段的总和(聚合)。困难在于当前的设置,请看一下并告诉我是否需要更改或我可以使用当前模型实现目标:
class Route(models.Model):
name = models.CharField(max_length=50)
route_length = models.IntegerField()
class Race(models.Model):
race_cod = models.CharField(max_length=6, unique=True)
route_id = models.ForeignKey(Route, on_delete=models.CASCADE, related_name='b_route')
class Results(models.Model):
race_id = models.ForeignKey(Race, on_delete=models.CASCADE, related_name='r_race')
runner_id = models.ForeignKey(Runner, on_delete=models.CASCADE, related_name='r_runner')
现在,我正在尝试进行一年的总结:
Runner X 已参加 12 场比赛,总距离为 134 公里。
虽然我能够计算这样的比赛数量(views.py)
runner = Runner.objects.get(pk=pk)
number_races = Results.objects.filter(runner_id=runner).count()
为了计算我尝试过的距离:
distance = Results.objects.filter(runner_id=runner).annotate(total_km=Sum(race_id.route_id.route_length))
此代码错误指出在views.py - 距离线上
异常类型:NameError 异常值:未定义名称“race_id”
我确信我没有完全理解它是如何工作的。有好心人来澄清一下这个问题吗?
谢谢