Как создать экземпляр модели в сериализаторах drf

Я новичок в DRF. Я хочу получить сохраненную модель ... Заранее спасибо.

В models.py, PackageDetails и PhysicalDetail имеют отношение foreignkey к Member

мой serializers.py выглядит следующим образом

from rest_framework import serializers
from .models import Member, PackageDetails, PhysicalDetail



class PackageDetailsSerializer(serializers.ModelSerializer):
    is_expired = serializers.SerializerMethodField()
    members_expiry_date = serializers.SerializerMethodField()


    class Meta:
        model = PackageDetails  
        exclude = ['id']
        extra_fields = ['is_expired', 'members_expiry_date']

    def get_is_expired(self, instance):
        return instance.is_expired


    def get_members_expiry_date(self, instance):
        return instance.members_expiry_date



class PhysicalDetailSerializer(serializers.ModelSerializer):
    class Meta:
        model = PhysicalDetail
        exclude = ['id']



class MemberSerializer(serializers.ModelSerializer):
    physical_details = PhysicalDetailSerializer(many=True)
    package_details = PackageDetailsSerializer(many=True)


    class Meta:
        model = Member
        fields = '__all__'
        extra_fields = ['physical_details', 'package_details']

    def create(self, validated_data):
        physical_detail_data = validated_data.pop("physical_details")
        package_detail_data = validated_data.pop("package_details")

        member = Member.objects.create(**validated_data)
        PhysicalDetail.objects.create(member=member, **physical_detail_data)
        PackageDetails.objects.create(member=member, **package_detail_data)
        return member

views.py :

class MemberViewset(viewsets.ModelViewSet):
    queryset = Member.objects.all()
    serializer_class = MemberSerializer

class PackageDetailViewset(viewsets.ModelViewSet):
    queryset = PackageDetails.objects.all()
    serializer_class = PackageDetailsSerializer


class PhysicalDetailViewset(viewsets.ModelViewSet):
    queryset = PhysicalDetail.objects.all()
    serializer_class = PhysicalDetailSerializer

В GET запросе все работает хорошо... но в POST запросе с тем же форматом json он отвечает следующее:

{
"physical_details": [
    "This field is required."
],
"package_details": [
    "This field is required."
]
}

Я предоставил поля. так почему это происходит...

Вы удалили их из диктанта, используя pop()

Метод pop() удаляет и возвращает элемент из словаря с заданным ключом.

Попробуйте использовать get() вместо

Метод get() возвращает значение для указанного ключа, если ключ находится в словаре.

Вернуться на верх