Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django模型关系-健身应用程序_Python_Django Models - Fatal编程技术网

Python Django模型关系-健身应用程序

Python Django模型关系-健身应用程序,python,django-models,Python,Django Models,目前我的型号是: class Workout(models.Model): date = models.DateField() routine = models.ForeignKey('Routine') def __str__(self): return '%s' % self.date class Routine(models.Model): name = models.CharField(max_length=255) e

目前我的型号是:

class Workout(models.Model):    
    date = models.DateField()
    routine = models.ForeignKey('Routine')
    def __str__(self):
         return '%s' % self.date

class Routine(models.Model):
    name = models.CharField(max_length=255)
    exercises = models.ManyToManyField('Exercise')
    def __str__(self):
        return self.name

 class Exercise(models.Model):
    name = models.CharField(max_length=255)
    def __str__(self):
        return self.name
我希望用户能够创建由日期(训练)指定的新条目。他们还可以创建与日期相关的例程(例程),并填充他们也可以创建的不同练习(练习)

这是我搞不懂的部分

我希望用户在添加新运动时能够选择是力量运动还是有氧运动。力量练习的范围包括:套数、重复次数和重量。像carido一样的地方会有像长度和速度这样的领域


我不清楚如何将这两种练习与练习课联系起来

最常用的方法是创建一个,例如:

from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType

class Exercise(models.Model):
    name = models.CharField(max_length=255)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    info = GenericForeignKey('content_type', 'object_id')
    def __str__(self):
        return self.name

class StrengthExercise(models.Model):
    sets, reps, weight = (...)

class CardioExercise(models.Model):
    length, speed = (...)
示例用法:

>>> from app_name.models import Exercise, CardioExercise
>>> exercise_info = CardioExercise.objects.create(length=600, speed=50)
>>> exercise = Exercise(name="cardio_exercise_1", info=exercise_info)
>>> exercise.save()
>>> exercise.info.length
600
>>> exercise.info.__class__.__name__
'CardioExercise'
OBS:确保您的
安装的应用程序中有
'django.contrib.contenttypes'
(默认情况下启用)