workout-suggest/src/exercises/models.py

47 lines
1.2 KiB
Python

from django.core.validators import MaxValueValidator, MinValueValidator
from django.db import models
class BodyRegion(models.Model):
name = models.CharField(max_length=250)
def __str__(self):
return self.name
class ExerciseManager(models.Manager):
def get_mostly_cardio(self):
return self.all().filter(rating__gt=3)
def get_mostly_strengthening(self):
return self.all().filter(rating__lt=3)
def get_balanced(self):
return self.all().filter(rating=3)
class Exercise(models.Model):
name = models.CharField(max_length=250)
rating = models.PositiveSmallIntegerField(
validators=[MaxValueValidator(5), MinValueValidator(1)],
help_text="From 1 (strengthening) to 5 (cardio)",
)
body_regions = models.ManyToManyField(BodyRegion, "exercises")
objects = ExerciseManager()
def __str__(self):
return self.name
def is_mostly_cardio(self):
return self.rating > 3
def is_mostly_strengthening(self):
return self.rating < 3
def is_balanced(self):
return self.rating == 3
def get_body_regions(self):
return ", ".join(map(str, self.body_regions.all()))