首页 > 解决方案 > 如何解决 Django 中“计划”和“执行”模型的构造?

问题描述

我正在尝试使用 django 开发一个锻炼跟踪网站。

这个想法是,创建一个视图来“计划”和“创建”锻炼,并创建另一个视图来“执行”其中一个保存的锻炼。

计划模式

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 模式应如下所示:

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 动态模型字段中一样)

非常感谢任何帮助。

标签: djangodjango-models

解决方案


(如果我理解正确的话)您可以创建另一个模型,称为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  
        ...

再说一次,如果这是你要问的?


推荐阅读