【发布时间】:2014-08-08 15:57:46
【问题描述】:
作为 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) 视图一起使用,我可以为此使用两个单独的序列化程序(一个用于列表,一个用于发布)吗?
【问题讨论】:
标签: django django-rest-framework