Django模型使用条件

时间:2016-03-26 09:12:27

标签: python django django-models django-rest-framework

我的models.py如下所示:

class Exercise(models.Model):

    #Field for storing exercise type
    EXERCISE_TYPE_CHOICES = (
        (1, 'Best stretch'),
        (2, 'Butterfly reverse'),
        (3, 'Squat row'),
        (4, 'Plank'),
        (5, 'Push up'),
        (6, 'Side plank'),
        (7, 'Squat'),
    )
    exercise_type = models.IntegerField(choices=EXERCISE_TYPE_CHOICES)

    #Field for storing exercise name
    -- Here comes the logic --

    #Field for storing intensity level
    INTENSITY_LEVEL_CHOICES = (
        (1, 'Really simple'),
        (2, 'Rather Simple'),
        (3, 'Simple'),
        (4, 'Okay'),
        (5, 'Difficult'),
        (6, 'Rather Difficult'),
        (7, 'Really Difficult'),
    )
    intensity_level = models.IntegerField(choices=INTENSITY_LEVEL_CHOICES)

    #Field for storing video url for a particular exercise
    video_url = models.URLField()

    #Field for storing description of the exercise
    description = models.CharField(max_length=500)

我希望有一个名为' exercise_name '的字段用于课堂练习,但是通过以下方式:

  • 对于exercise_type = 1,它应该是'Best stretch'
  • 对于exercise_type = 1,它应该是'Butterfly reverse'等等。

我怎样才能做到这一点?或者如果不是这样,有没有更好的方法来做到这一点?

底线:我的练习应该有以下字段 - 类型,名称,描述,Video_url

1 个答案:

答案 0 :(得分:1)

如果您想根据exercise_type获取字符串表示,只需使用get_exercise_type_display()即可。它将根据EXERCISE_TYPE_CHOICES返回。

ex = Exercise(exercise_type=1, intensity_level=1)
ex.get_exercise_type_display()    # => 'Best stretch'
ex.get_intensity_level_display()  # => 'Really simple'