2015-12-25 103 views
1

我想返回一些json數據到客戶端。因此,我寫了一個序列化器來表示最後輸出的域對象。我完全無法理解引擎蓋下的機制,也是嵌套序列化器。採取下面的模型爲例:django rest框架序列化程序的用法

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

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

根據官方文件,我知道我可以通過

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

問題1

初始AccountSerializer如果我想最初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"}} 

由於輸出這麼多,如果你的任何教/評論。

回答

0

問題1個

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

問題2

應該是這樣的:

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

感謝您的答覆。但那不是我想要的答案。你能否更仔細地閱讀這個問題。我想知道的是:1.首先將AccountSerializer首先不帶任何數據參數'ac = AccountSerializer()'2.之後,如何設置屬性值,如'ac.name =「TOM」'。你能明白我的意思嗎?謝謝 – user5698801

+0

好吧,序列化程序包含字典,但不是字典,所以我不確定這是否可能。 – cdvv7788

+0

是的。這是我的擔心。我沒有找到任何方法來更新序列化器後的實例。無論如何,非常感謝你的回覆。 – user5698801

相關問題