from rest_framework import serializers from courses.models import Course, Lesson, Topic class TopicSerializer(serializers.ModelSerializer): children = serializers.SerializerMethodField() class Meta: model = Topic exclude = ['id'] @staticmethod def get_children(self): return [MiniLessonSerializer(i).data for i in self.lesson_set.all()] class MiniLessonSerializer(serializers.ModelSerializer): class Meta: model = Lesson fields = ('title', 'free', 'token') class LessonSerializer(MiniLessonSerializer): class Meta: model = Lesson exclude = ('id', 'topic', 'key') class CourseInitSerializer(serializers.ModelSerializer): class Meta: model = Course fields = ['title', 'slug'] class CourseTreeSerializer(serializers.ModelSerializer): tree = serializers.SerializerMethodField() class Meta: model = Course fields = ('tree', 'slug') @staticmethod def get_tree(self): return [TopicSerializer(i).data for i in self.topic_set.all()] class CourseDetailSerializer(serializers.ModelSerializer): level = serializers.SerializerMethodField() direction = serializers.SerializerMethodField() statistic = serializers.SerializerMethodField() class Meta: model = Course exclude = ('id', ) @staticmethod def get_level(self): return self.get_level_display() @staticmethod def get_direction(self): return self.get_direction_display() @staticmethod def get_statistic(self): return self.get_statistic()