首页 > 解决方案 > 如何形成 JSON 对象,以便它可以被嵌套模型序列化器反序列化

问题描述

我有两个模型CompanyDetailsUser为此我创建了两个ModelSerializerasCompanyDetailsSerializerRegisterUserSerializer.

公司详情Serializer

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 数据发送到序列化程序?

标签: django-rest-frameworkdjango-serializer

解决方案


对于初学者,您的数据中有一个错字:comapny而不是company.

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


推荐阅读