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数据中已存档的公司
应该是有效的公司
主键