Как связать модели с помощью обратной ссылки
Привет, ребята! Как я могу связать две модели? Я хочу написать вот так:
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': ...}