Как я могу решить конструкцию «планирования» и «исполнения» моделей в Джанго? - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь разработать сайт для отслеживания тренировок с django.

Идея состоит в том, чтобы создать одно представление для «планирования» и «создания» тренировки, а другое - «выполнить» одно из следующих действий:сохраненные тренировки.

Plan-Mode

class Workout(models.Model):
    title = models.CharField(max_length=100)
    date_created = models.DateTimeField(default=timezone.now)
    date_updated = models.DateTimeField(auto_now_add=timezone.now)
    creator = models.ForeignKey(User, on_delete=models.CASCADE)

class Excercise(models.Model):
    exercise = models.CharField(max_length=100)
    sets = models.PositiveIntegerField()
    reps = models.PositiveIntegerField()
    weight = models.DecimalField(max_digits=5,decimal_places=2)
    date_created = models.DateTimeField(default=timezone.now)
    date_updated = models.DateTimeField(auto_now_add=timezone.now)
    workout = models.ForeignKey(Workout, 
    on_delete=models.CASCADE)

Данные могут выглядеть следующим образом:

"Leg Workout": (workout.title)
{
  ("Squats", 5, 5, 35.5),
  ("Leg Press",3,8,55.15),
}

это для Plan-Mode , отлично работает!и теперь я застрял!

Exe-Mode должен выглядеть следующим образом:

title:Leg Workout
    exercise: Squats
        Set 1: n of 5 Reps with 35.5kg  
        Set 2: n of 5 Reps with 35.5kg
        Set 3: n of 5 Reps with 35.5kg
        Set 4: n of 5 Reps with 35.5kg
        Set 5: n of 5 Reps with 35.5kg
    exercise: Leg Press
        Set 1: n of 8 Reps with 55.15kg  
        Set 2: n of 8 Reps with 55.15kg
        Set 3: n of 8 Reps with 55.15kg

Я не знаю, как обращаться с наборами, повторениями и весовыми атрибутами.я думаю, мне нужно создать динамическую модель (например, WorkoutSession) и динамически добавлять атрибуты в зависимости от количества определенных наборов?(как в этом посте Поля динамической модели Django )

любая помощь высоко ценится.

1 Ответ

1 голос
/ 01 июля 2019

(Если я вас правильно понял) Вы можете создать другую модель с именем Set

class Set(models.Model):
    exercise = models.ForeignKey(Excercise, on_delete.models.CASCADE)
    set_number = models.PositiveIntegerField()
    reps = models.PositiveIntegerField()
    weight = models.DecimalField(max_digits=5,decimal_places=2)
    date_created = models.DateTimeField(default=timezone.now)
    date_updated = models.DateTimeField(auto_now_add=timezone.now)

так что вы должны иметь, например:

Workout model instance: Leg Workout
    Exercise model instance: Squats
        Set model instance 1:
            number: 1
            reps: 5
            weight: 35.5kg  
        Set model instance 2:
            number: 2
            reps: 7
            weight: 30kg  
        ...

Опять же, если это то, что вы спрашиваете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...