from rest_framework.fields import SerializerMethodField from vbv_lernwelt.competence.serializers import ( PerformanceCriteriaLearningPathSerializer, ) from vbv_lernwelt.core.serializer_helpers import get_it_serializer_class from vbv_lernwelt.learnpath.models import LearningUnit class LearningUnitSerializer( get_it_serializer_class( LearningUnit, [ "evaluate_url", "course_category", "children", ], ) ): evaluate_url = SerializerMethodField() def get_children(self, obj): return [ PerformanceCriteriaLearningPathSerializer(child).data for child in obj.performancecriteria_set.all() ] def get_evaluate_url(self, obj): return obj.get_evaluate_url() class LearningUnitPerformanceCriteriaSerializer( get_it_serializer_class( LearningUnit, [ "evaluate_url", "course_category", ], ) ): evaluate_url = SerializerMethodField() def get_evaluate_url(self, obj): return obj.get_evaluate_url()