我有Exercise
,Training
和Workout
的模型。Training
包含一些练习(Exercise
)Workout
包含培训(Training
)。
我的models.py的片段:
class Exercise(models.Model):
user = models.ForeignKey(User, related_name='exercises',
on_delete=models.CASCADE)
name = models.CharField(max_length=80)
description = models.TextField(max_length=300)
details = models.ManyToManyField(ExerciseDetail, blank=True)
...
class Training(models.Model):
user = models.ForeignKey(User, related_name='trainings',
on_delete=models.CASCADE)
name = models.CharField(max_length=80)
description = models.CharField(max_length=250)
exercises = models.ManyToManyField(Exercise, related_name='trainings',
blank=True)
...
class Workout(models.Model):
user = models.ForeignKey(User, related_name='workouts',
on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now=True)
name = models.CharField(max_length=200)
description = models.TextField(max_length=400, blank=True)
trainings = models.ManyToManyField(Training, related_name='workouts',
blank=True)
...
我希望有可能使用类似
Workout.objects.get(name='workout').exercises.objects.all()
的方法来获取所选锻炼训练中包含的所有练习的列表/集。我也想有可能使用
exercises`` field with Django Rest Framework to list all exercises, possibly with link to particular
Exercise`''模型序列化器。有人可以提示我该怎么做吗?
最佳答案
您可以使用以下查询:
Exercise.objects.filter(
trainings__workouts__name='workout'
)
使用连续的下划线(
__
),您可以查找“直通”关系。因此,这将返回名称为
Exercise
的,属于Training
的Workout
的'Workout'
。关于python - 如何处理从一个模型字段到另一模型字段的数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56852371/