from rest_framework import serializers from .models import * from exercise.models import Exercise from exercise.serializers import ExerciseSerializer class SupersetExerciseSerializer(serializers.ModelSerializer): exercise = serializers.SerializerMethodField() unique_id = serializers.SerializerMethodField() class Meta: model = SupersetExercise fields = '__all__' def get_exercise(self, obj): data = ExerciseSerializer(obj.exercise, many=False).data return data def get_unique_id(self, obj): return f"{obj.pk}-{obj.superset_id}" if hasattr(obj, 'superset_id') else str(obj.pk) class SupersetSerializer(serializers.ModelSerializer): exercises = serializers.SerializerMethodField() class Meta: model = Superset fields = '__all__' def get_exercises(self, obj): if obj.pk is None: return [] # Use prefetched data if available via superset_exercises related manager objs = obj.superset_exercises.all().order_by('order') data = SupersetExerciseSerializer(objs, many=True).data return data