【发布时间】:2018-01-26 01:53:09
【问题描述】:
我有这个带有父字段的子模型,我从 API 获取 JSON(我无法控制它的格式)。
models.py:
class ChildModel(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
parent = models.CharField(max_length=100)
API.json:
{
"parent_name":'Homer',
"children":[
{
"name":'Bart',
"age":20
},
{
"name":'Lisa',
"age":15
},
{
"name":'Maggie',
"age":3
}
]
}
我正在尝试编写一个序列化程序来获取这个 JSON 并创建 3 个不同的子对象。
我设法为一个孩子做到这一点:
class ChildSerializer(serializers.Serializer):
name = serializers.CharField()
age = serializers.IntegerField()
class ParentSerializer(serializers.ModelSerializer):
parent_name = serializers.CharField()
children = ChildSerializer(source='*')
class Meta:
model = ChildModel
fields = ('parent_name', 'children')
但是当父母有多个孩子时,我不知道如何保存多个孩子。
我试着改成这样:
children = ChildSerializer(source='*', many=True)
但经过验证的数据看起来像这样:
OrderedDict([(u'parent_name', u'Homer'), (u'name', u'age')])
有什么建议可以让它成为可能吗?
【问题讨论】:
-
仅供参考。
child的复数形式是children。在某些情况下,孩子们可能不需要自己的Model。 drf 支持django'sArrayField。不知道这是否有帮助。 -
@demux 感谢英语课,我更新了帖子。就我而言,我确实需要一个子模型(因为我什至没有父模型),所以 ArrayField 不是一个选项。
标签: python json django django-rest-framework deserialization