You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

49 lines
1.5 KiB

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