Методика исправления того, что объект 'QuerySet' не имеет атрибута 'Breakdown' для проекта Django

У меня есть проект тренировочного прогресса, над которым я работаю, и я пытаюсь найти разбивку каждого упражнения, то есть повторения и порядок. Вот модель для пояснения:

class Workout(models.Model):
    name = models.CharField(max_length = 30,blank=True, null=True)
    date = models.DateField(blank=True, null=True)
    slug = models.SlugField(unique=True,blank=True, null=True)

    def __str__(self):
        return str(self.name)

    def get_absolute_url(self):
        return reverse("my_gym:workout", kwargs={'workout_id': self.id})

class Exercise(models.Model):
    workout = models.ForeignKey(Workout, on_delete=models.CASCADE, related_name='exercises',blank=True, null=True)
    name = models.CharField(max_length = 30, blank=True, null=True)

    def __str__(self):
        return self.name

class Breakdown(models.Model):
    exercise = models.ForeignKey(Exercise, on_delete=models.CASCADE, related_name='sets',blank=True, null=True)
    weight = models.FloatField(validators=[MinValueValidator(0)],blank=True, null=True)
    repetitions = models.IntegerField(validators=[MinValueValidator(1)],blank=True, null=True)
    order = models.IntegerField(validators=[MinValueValidator(1)],blank=True, null=True)

    def __str__(self):
        return self.exercise.name + ' set #' + str(self.order)

Я пытаюсь показать таблицу после перехода к списку упражнений для просмотра повторений и порядка

Вот url:

urlpatterns = [
    path('', views.home, name='home'),
    path('workout/<int:workout_id>/', views.workout_details, name='workout'),
]

Вот мнения:

def workout_details(request,workout_id):
    template_name = 'my_gym/start_workout.html'
    # workouts = Workout.objects.filter(workout_id=workout_id)
    # excercises = Exercise.objects.get(pk=workout_id)
    excercises = Exercise.objects.filter(workout_id=workout_id)
    breakdown=excercises.Breakdown.repetitions.all()
    context = {
        'excercises': excercises,
        'breakdown':breakdown
    }
    return render(request, template_name, context)

В шаблоне:

{% for set in sets %}
{{excercises.breakdown.order}}
{{set.repetitions}}
    {% endfor %}

Мой вопрос:

Я получаю

'QuerySet' object has no attribute 'Breakdown' ошибка

Я пробовал много вариантов, которые я прокомментировал, в результате я получал либо список всех разбивок всех упражнений, либо вообще ничего не получал.

Мой объект получает, например, список повторений в workout_id=1 url

Давайте разложим это по полочкам:

excercises является кверисетом объектов Exercise

Breakdown - это модель, которая имеет отношение ForeignKey к Exercise, со связанным именем sets

Итак, чтобы получить разбивки, связанные с упражнениями в упражнениях, вы можете использовать

breakdowns = excercises.sets.all().order_by('order')

Теперь в своем шаблоне вы можете использовать

{% for exercise in excercises %}
    {{ exercise }}
    {% for breakdown in breakdowns %}
        {% if breakdown.exercise == exercise %}}
            repetitions: {{breakdown.repetitions}}<br>
        {% endif %}
    {% endfor %}
{% endfor %}
Вернуться на верх