Parmi mes modèles, j'ai Exercice qui a un lien m2m à Workout. J'ai aussi WorkoutPlan et LogBook qui sont des types de séances d'entraînement. WorkoutPlan est l'endroit où les entraînements idéaux sont stockés. LogBook est l'endroit où un utilisateur stocke l'entraînement qu'ils ont réellement terminé. Ils peuvent également lier un LogBook à un WorkoutPlan pour indiquer que la performance réelle a été connectée à un plan idéal original.Requête de l'enfant du modèle donné héritage django et lien m2m au parent
class Exercise(NameDescModel):
muscles = models.ManyToManyField(Muscle, blank=True)
groups = models.ManyToManyField(Group, blank=True)
priority_score = models.DecimalField(max_digits=5, decimal_places=3, editable=False, default = 0)
frequency = models.IntegerField()
time_period = models.CharField(max_length=2, choices=TIME_PERIOD_CHOICES,default=WEEK)
last_p_calc_date = models.DateField("Date of Last Priority Recalculation", blank=True, null=True, default=datetime.now)
class Workout(NameDescModel):
exericises = models.ManyToManyField(Exercise, through='Measurement')
class WorkoutPlan(Workout):
priority_score = models.DecimalField(max_digits=5, decimal_places=3, editable=False, default = 0)
frequency = models.IntegerField()
time_period = models.CharField(max_length=2, choices=TIME_PERIOD_CHOICES,default=WEEK)
time_estimate = models.IntegerField()
last_p_calc_date = models.DateField("Date of Last Priority Recalculation", blank=True, null=True, default=datetime.now)
class LogBook(Workout):
workout_date = models.DateField(default=datetime.now)
notes = models.TextField(blank=True)
workout_plan = models.ForeignKey(WorkoutPlan, blank=True, null=True)
Pour un exercice donné, je veux tirer tous les WorkoutPlans que l'exercice est.
exercise_list = Exercise.objects.order_by('-last_p_calc_date')
for exercise in exercise_list:
print exercise
workout_list = []
for workout in exercise.workout_set.all():
workout_list.append(workout)
print list(set(workout_list))
print ""
Je me rends compte que la liste des séances d'entraînement comprennent à la fois WorkoutPlans et parce que l'exercice est des journaux de bord attaché à Workout, pas à WorkoutPlans ou LogBooks spécifiquement.
Comment puis-je tirer des séances d'entraînement qui ne sont affiliées qu'à WorkoutPlans?
Merci pour cela. Oui, je veux garder l'exercice attaché à LogBook au cas où la séance d'entraînement réelle diffère du plan (y compris ou en excluant certains exercices). Et oui, j'ai joint l'exercice à Workout parce que je me suis dit que si WorkoutPlan et Logbook l'utilisaient, je devais hériter. Je vais réviser cependant parce que cela me permettra de faire ce dont j'ai besoin. –