from rest_framework import serializers from apps.transaction.models import TransactionParticipant, ParticipantInfo from apps.course.serializers import CourseDetailSerializer class ParticipantInfoSerializer(serializers.ModelSerializer): class Meta: model = ParticipantInfo fields = ['fullname', 'email', 'phone_number', 'gender', 'birthdate'] class TransactionParticipantSerializer(serializers.ModelSerializer): participant_infos = ParticipantInfoSerializer(many=True) class Meta: model = TransactionParticipant fields = ['participant_infos'] def create(self, validated_data): participant_infos_data = validated_data.pop('participant_infos', []) transaction_participant = TransactionParticipant.objects.create(**validated_data) for participant_info_data in participant_infos_data: ParticipantInfo.objects.create(transaction_participant=transaction_participant, **participant_info_data) return transaction_participant class TransactionListSerializer(serializers.ModelSerializer): course = serializers.SerializerMethodField() class Meta: model = TransactionParticipant fields = ['course', 'is_paid', 'price', 'created_at', 'updated_at'] def get_course(self, obj): return CourseDetailSerializer(obj.course, context=self.context).data