Я новичок в django и пока создал эти модели. Climb
представляет маршруты восхождения с названиями, неделей, классом и баллами, связанными, если они завершены, и модель Climber
с climbs_completed
, которая представляет собой набор Climb
. Мой вопрос: как мне создать форму django, которая отображает существующие объекты Climb
с флажком, чтобы пользователь мог выбрать, какой Climb
он / она выполнил, и сохранить его в своем поле climbs_completed
?
class Climb(models.Model):
name = models.CharField(max_length=20, default='')
grades = [('v'+str(i),'v'+str(i))for i in range(0,13)]
grade = models.CharField(max_length=3, choices=grades, default='v-1')
weeks = [(i,i)for i in range(1,13)]
week = models.IntegerField(choices=weeks, default=0)
points = models.IntegerField(default=0)
def __str__(self):
return self.name
class Climber(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
grades = [('v'+str(i),'v'+str(i))for i in range(0,13)]
highest_grade = models.CharField(max_length=3, choices=grades, default='v0')
team = models.ForeignKey(Team, null=True, on_delete=models.SET_NULL)
climbs_completed = models.ManyToManyField(Climb, blank=True)
def __str__(self):
return self.user.username
# for each climbs_completed, sum up the points
@property
def total_score(self):
return self.climbs_completed.aggregate(total_score=Sum('points'))['total_score']