Как создать форму в django, которая выбирает экземпляры другой модели django? - PullRequest
0 голосов
/ 08 мая 2020

Я новичок в 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']
...