Ограничение количества объектов, которые пользователь может добавить в другой объект
У меня есть небольшой вопрос, Я хотел бы ограничить упражнения в тренировочном блоке до 3-5 упражнений, и ограничить тренировочные блоки в тренировочном плане до 12 тренировочных блоков, так что пользователь не сможет добавить бесконечное количество упражнений, или бесконечное количество тренировочных блоков в план?
class TrainingPlan(models.Model):
user= models.ForeignKey(User, on_delete=models.CASCADE)
nameoftheplan = models.CharField(verbose_name="Name of the plan",max_length=20, null=True)
Squat1RM = models.PositiveIntegerField(verbose_name="100%RM in squat",default=0, blank=True, null=True)
DeadliftT1RM =models.PositiveIntegerField(verbose_name="100%RM maximal repetition in deadlift",default=0, blank=True, null=True)
Benchpress1RM = models.PositiveIntegerField(verbose_name="100%RM maximal repetition in benchpress",default=0, blank=True, null=True)
mesocycle= models.CharField(max_length=40, choices=MESOCYCLE_CHOICES,default=MESOCYCLE_GPP)
timeoftheplan= models.CharField(max_length=40,choices=TIME_CHOICE,default=TIME_WEEK3 )
def __str__(self):
return str(self.nameoftheplan)
class TrainingUnit(models.Model):
trainingplan=models.ForeignKey(TrainingPlan, on_delete=models.CASCADE)
class Exercise(models.Model):
trainingunit=models.ForeignKey(TrainingUnit,on_delete=models.CASCADE)
exercisename=models.CharField(max_length=100,verbose_name="Exercise",choices=EXERCISE_CHOICES)
exercisesets=models.IntegerField(choices=SETSCHOICES)
exercisereps=models.IntegerField(choices=REPCHOICES)
когда вы обрабатываете запрос пользователя, вы можете использовать objects.filter().count()
или objects.all().count()
идею в count()
вы можете применить ее к любому запросу, который вы хотите, таким образом вы проверите, сколько значений у вас есть в базе данных на основе условия, после чего вы можете принять запрос пользователя или выдать ошибку