默认情况下,使用django-tastypie并获取资源列表时,响应的格式为:
{
"meta": {
"limit": 20,
"next": null,
"offset": 0,
"previous": null,
"total_count": 3
},
"objects": [{
"body": "Welcome to my blog!",
"id": "1",
"pub_date": "2011-05-20T00:46:38",
"resource_uri": "/api/v1/entry/1/",
"slug": "first-post",
"title": "First Post",
"user": "/api/v1/user/1/"
},
...
]
}
我已经挖掘了文档并查看了&看起来,但我似乎无法找到任何类型的元选项或设置更改“对象”键来实际描述返回的项目。例如,假设我有一个api调用中的位置列表和另一个api调用中的人员列表。我希望能够将关键区分为“位置”和“人”。真正的原因是因为我在iOS上使用RestKit并希望能够设置多个映射。
答案 0 :(得分:15)
资源挂钩alter_*可用于更改数据结构。
使用“位置”的示例资源将是:
class MyLocationsResource(ModelResource):
def alter_list_data_to_serialize(self, request, data):
data['locations'] = data['objects']
del data['objects']
return data
def alter_deserialized_list_data(self, request, data):
data['objects'] = data['locations']
del data['locations']
return data