django rest框架序列化器的用法

时间:2015-12-25 15:35:52

标签: json django django-rest-framework

我想将一些json数据返回给客户端。因此,我编写了一个序列化程序来表示最后输出的域对象。我完全无法理解引擎盖下的机制,也是嵌套的序列化器。以下面的模型为例:

class AddressSerializer(serializers.Serializer):
    address = serializers.CharField()
    zipcode = serializers.CharField()

class AccountSerializer(serializers.Serializer):
    name = serializers.CharField()
    address = AddressSerializer

根据官方文件,我知道我可以通过

初始化AccountSerializer
ac = AccountSerializer(data={"name":"TOM"})

问题1

如果我想以某种方式初始化AccountSerializer,如下所示:

ac = AccountSerializer()
ac.name = "TOM"

我怎么能这样做?

问题2

如何使下面的代码有效?

ad = AddressSerializer(data={"address":"NewYork"});
ac = AccountSerializer(data={"name":"TOM"});
ac.address = ad
ac.is_valid()
ac.data

这样我就可以获得像

这样的输出
{name: "Tom", address: {address: "NewYork"}}

非常感谢您的任何教学/评论。

1 个答案:

答案 0 :(得分:0)

问题1

data = {
    'name': 'TOM'
}
ac = AccountSerializer(data=data)

问题2

应该是这样的:

data = {
    'name': 'TOM'
    'address': {
        'address': 'NewYork'
    }
}
ac = AccountSerializer(data=data)