我不完全确定我的问题的标题是否如我所希望的那样具体,但事实是这样的:
我有一个HyperlinkedModelSerializer
看起来像这样:
class ParentArrivalSerializer(serializers.HyperlinkedModelSerializer):
carpool = SchoolBuildingCarpoolSerializer()
class Meta:
model = ParentArrival
如您所见,carpool
被定义为一个嵌套的序列化器对象,我想要的是能够发出POST请求,以这种方式创建一个ParentArrival
(数据作为application/json):
{
...
"carpool": "http://localhost:8000/api/school-building-carpools/10/"
...
}
以这种方式接收数据:
{
"carpool": {
"url": "http://localhost:8000/api/school-building-carpools/10/"
"name": "Name of the carpool",
...
}
}
基本上,我在寻找一种方法来处理嵌套序列化器,而不必在POST请求中将数据作为对象(在本例中是id或url)发送,而是将对象作为嵌套在序列化响应中接收。
我对我之前的解决方案很满意,但我决定再看一次,我想我有另一个解决方案,完全符合你的要求。
基本上,您需要创建自己的自定义字段,并覆盖
to_representation
方法:这将允许您使用
得到:
重写
to_representation
方法怎么样?很简单。 如您所知,
Django appends "_id" to the field name
在ModelClass中,您可以在SerializerClass中实现它,也可以实现原始字段。你要做的就是这样在POST请求中使用
carpool_id
。相关问题 更多 >
编程相关推荐