Моя цель здесь проста: отобразить сумму (агрегацию) определенной области сторонней модели. Сложность состоит в текущей настройке, пожалуйста, посмотрите и дайте мне знать, если это нужно изменить, или я могу достичь цели с текущей моделью:
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')
Теперь я пытаюсь получить например, итоги за год:
Бегун 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' не определено
Я уверен, что не понял, как именно это работает. Кто-нибудь достаточно любезен, чтобы прояснить этот вопрос?
Спасибо