django-rest-framework - 如何形成 JSON 对象,以便它可以被嵌套模型序列化器反序列化
问题描述
我有两个模型CompanyDetails
,User
为此我创建了两个ModelSerializer
asCompanyDetailsSerializer
和RegisterUserSerializer
.
公司详情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 数据发送到序列化程序?
解决方案
对于初学者,您的数据中有一个错字:comapny
而不是company
.
假设User
有一个外键Company
,那么用户 JSON 数据中的归档company
应该是一个有效的Company
主键。
推荐阅读
- ios - 如何在 iOS 中对图像实现 XMP 预设过滤器
- r - 如何编写一个函数来根据控制数据集在 R 中剪切许多列
- javascript - 检查包含文档中所有对象ID的数组字段中是否存在对象ID的最佳方法是什么?
- python - 调用 plt.subplot() 重置子图大小
- python - Pipenv 虚拟环境将我拉入不同的目录
- makefile - 如何从一个 GNU makefile 和大部分相同的源构建两个交互式网站?
- django - 按末端嵌套关系搜索 django rest 框架
- angular - 可以将 Angular 公开为 Web 服务 API 吗?
- c# - 刚开始学习 c# 并且在 for 循环后无法正确划分随机数
- flutter - 过滤 Streambuilder/listviewBuilder 颤动