java rest 序列化_Django Rest Framework中的序列化和反序列化

作为Django REST Framework的新手,我在给我的ModelSerializer中的主键反序列化对象时遇到了问题 . 例如,我有2个扩展ModelSerializer的序列化程序:

class CourierSerializer(serializers.ModelSerializer):

class Meta:

model = Courier

fields = (

"first_name",

"last_name",

"phone"

)

class OrderSerializer(serializers.ModelSerializer):

courier = CourierSerializer()

class Meta:

model = Order

fields = (

"number",

"courier"

)

我的基于类的视图看起来像这样:

class OrderList(generics.ListCreateAPIView):

model = Order

serializer_class = OrderSerializer

现在,当我将Order模型序列化为JSON时,我得到了我想要的 - 对象“Order”,其中包含有关它的“Courier”的详细嵌套信息:

[

{

id: 1,

number: "000231",

courier: {

id: 2,

first_name: "John",

last_name: "Smith",

phone: "12345678"

}

},

...

]

但是在客户端的POST调用中,我想只接收Courier的外键:

{

id: 1,

number: "000231",

courier: 2

}

我应该在OrderSerializer类中添加什么来将这种JSON反序列化为Order模型?我应该写restore_object()吗?或者我应该编写额外的序列化程序来反序列化?如何使用我的(generics.ListCreateAPIView)视图,我可以使用两个单独的序列化程序(一个用于列表,一个用于发布)用于此目的?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值