Django rest framework 如何形成JSON对象,以便嵌套模型序列化程序对其进行反序列化

Django rest framework 如何形成JSON对象,以便嵌套模型序列化程序对其进行反序列化,django-rest-framework,django-serializer,Django Rest Framework,Django Serializer,我有两个型号CompanyDetails和User,我为它们创建了两个ModelSerializer作为CompanyDetailsSerializer和RegisterUserSerializer CompanyDetailsSerializer class CompanyDetailsSerializer(serializers.ModelSerializer): class Meta: model = CompanyDetails fields =

我有两个型号
CompanyDetails
User
,我为它们创建了两个
ModelSerializer
作为
CompanyDetailsSerializer
RegisterUserSerializer

CompanyDetailsSerializer

class CompanyDetailsSerializer(serializers.ModelSerializer):

    class Meta:
        model = CompanyDetails
        fields = ['id', 'company_name', 'is_active']
        extra_kwargs = {
            'company_name' : {
                'required' : True,
                'allow_null' : False,
                'allow_blank' : False
            
class RegisterUserSerializer(serializers.ModelSerializer):
    '''
    This serializer is for Register User view.
    '''
    company = CompanyDetailsSerializer()

    class Meta:
        model = User
        fields = ['id', 'first_name', 'last_name', 'email', 'mobile_number', 'company', 'password']
        extra_kwargs = {
            'first_name' : {
                'required' : True,
                'allow_null' : False,
                'allow_blank' : False
            },
            'last_name' : {
                'required' : True,
                'allow_null' : False,
                'allow_blank' : False
            },
            'email' : {
                'required' : True,
                'allow_null' : False,
                'allow_blank' : False
            },
            'mobile_number' : {
                'required' : True,
            },
            'password' : {
                'required' : True,
                'allow_blank' : False,
                'allow_null' : False,
                'write_only': True
            }
        }
} }

RegisterUserSerializer

class CompanyDetailsSerializer(serializers.ModelSerializer):

    class Meta:
        model = CompanyDetails
        fields = ['id', 'company_name', 'is_active']
        extra_kwargs = {
            'company_name' : {
                'required' : True,
                'allow_null' : False,
                'allow_blank' : False
            
class RegisterUserSerializer(serializers.ModelSerializer):
    '''
    This serializer is for Register User view.
    '''
    company = CompanyDetailsSerializer()

    class Meta:
        model = User
        fields = ['id', 'first_name', 'last_name', 'email', 'mobile_number', 'company', 'password']
        extra_kwargs = {
            'first_name' : {
                'required' : True,
                'allow_null' : False,
                'allow_blank' : False
            },
            'last_name' : {
                'required' : True,
                'allow_null' : False,
                'allow_blank' : False
            },
            'email' : {
                'required' : True,
                'allow_null' : False,
                'allow_blank' : False
            },
            'mobile_number' : {
                'required' : True,
            },
            'password' : {
                'required' : True,
                'allow_blank' : False,
                'allow_null' : False,
                'write_only': True
            }
        }
request.data包含以下JSON,由
RegisterUserSerSerializer
-

{
    "first_name": "Jeet",
    "last_name": "Patel",
    "mobile_number": 9765136777,
    "email": "jpatel99967@gmail.com",
    "password": "123456",
    "comapany": {
        "company_name": "Yantra Inc"
    }
}
但是,
RegisterUserSerializer
会生成下面所述的错误

{
    "company": [
        "This field is required."
    ]
}

如何将JSON数据发送到序列化程序?

首先,您的数据中有一个输入错误:
copany
,而不是
company

假设
用户
有一个指向
公司
的外键,那么用户JSON数据中已存档的
公司
应该是有效的
公司
主键