from rest_framework import serializers from apps.transaction.models import TransactionParticipant, ParticipantInfo from apps.course.serializers import CourseDetailSerializer class ParticipantInfoSerializer(serializers.ModelSerializer): phone_number = serializers.CharField(max_length=30) class Meta: model = ParticipantInfo fields = ['fullname', 'email', 'phone_number', 'gender', 'birthdate'] def validate_phone_number(self, value): return value 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', 'status', 'price', 'created_at', 'updated_at'] def get_course(self, obj): return CourseDetailSerializer(obj.course, context=self.context).data