作为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)视图,我可以使用两个单独的序列化程序(一个用于列表,一个用于发布)用于此目的?