如何形成 JSON 对象,以便它可以被嵌套模型序列化程序反序列化

How to form JSON object so that it could be deserialized by nested model serializer

我有两个模型 CompanyDetailsUser,为此我创建了两个 ModelSerializer 作为 CompanyDetailsSerializerRegisterUserSerializer

CompanyDetailsS​​erializer

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
            

} }

RegisterUserSerializer

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 由 RegisterUserSerializer -

进一步序列化
{
    "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 数据发送到序列化程序?

首先,您的数据中有错字:comapny 而不是 company

假设 User 有一个到 Company 的外键,那么你的用户 JSON 数据中的 company 应该是一个有效的 Company 主键.