diff --git a/db.sqlite3 b/db.sqlite3 index 787a66e..6e1f5bf 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ diff --git a/workout/serializers.py b/workout/serializers.py index 5ac12e9..884b878 100644 --- a/workout/serializers.py +++ b/workout/serializers.py @@ -2,6 +2,8 @@ from rest_framework import serializers from .models import * from exercise.serializers import ExerciseSerializer from registered_user.serializers import GetRegisteredUserSerializer +from muscle.models import ExerciseMuscle +from equipment.models import WorkoutEquipment class WorkoutExerciseSerializer(serializers.ModelSerializer): exercise = ExerciseSerializer(read_only=True) @@ -12,8 +14,6 @@ class WorkoutExerciseSerializer(serializers.ModelSerializer): model = WorkoutExercise fields = ('workout', 'exercise','weight','reps','duration','duration_audio','weight_audio', 'created_at',) - - class CompleteWorkoutSerializer(serializers.ModelSerializer): class Meta: model = CompletedWorkout @@ -37,11 +37,23 @@ class CompleteWorkoutSerializer(serializers.ModelSerializer): class WorkoutSerializer(serializers.ModelSerializer): # exercise = WorkoutExerciseSerializer(source='workout_exercise_workout', many=True) registered_user = GetRegisteredUserSerializer(many=False, read_only=True) + muscles = serializers.SerializerMethodField() + equipment = serializers.SerializerMethodField() class Meta: model = Workout fields = '__all__' # depth = 1 + + def get_muscles(self, obj): + exercises = WorkoutExercise.objects.filter(workout=obj).values_list('id') + muscles_names = ExerciseMuscle.objects.filter(exercise__id__in=exercises).values_list('muscle__name', flat=True) + return list(set(muscles_names)) + + def get_equipment(self, obj): + exercises = WorkoutExercise.objects.filter(workout=obj).values_list('id') + muscles_names = WorkoutEquipment.objects.filter(exercise__id__in=exercises).values_list('equipment__name', flat=True) + return list(set(muscles_names)) class WorkoutDetailSerializer(serializers.ModelSerializer): exercises = serializers.SerializerMethodField()