Как связать модели с помощью обратной ссылки

Привет, ребята! Как я могу связать две модели? Я хочу написать вот так:

user_goal_minutes = ninja.ninjagoal_set.goal_time * 60

Мои модели:

class Ninja(models.Model):
id_user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="ninja", blank=True, null=True)
id_teams = models.ManyToManyField("mission.Team", blank=True)
avatar = models.ImageField(upload_to='avatar/', default='avatar/default.png', blank=True)
goal_time = models.PositiveIntegerField(default=0, blank=True)

class NinjaGoal(models.Model):
id_mission = models.ForeignKey(Mission, null=True, blank=True, on_delete=models.SET_NULL)
id_ninja = models.ForeignKey("accounts.Ninja", null=True, blank=True, on_delete=models.SET_NULL)
goal_time = models.PositiveIntegerField(default=0, blank=True)

ninjagoal_set вернет кверисет, поэтому вызов .goal_time не сработает - вы можете либо агрегировать goal_time значение кверисета, либо выбрать один объект из кверисета.

from django.db.models import Sum
user_goal_minutes = ninja.ninjagoal_set.all().aggregate(Sum('goal_time'))

# result:
{'goal_time__sum': ...}
Вернуться на верх