Est-il possible de définir la clé des objets django-tastypie?
Question
Par défaut, lors de l'utilisation de django-tastypie et de la récupération d'une liste de ressources, la réponse est au format:
{
"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/"
},
...
]
}
J'ai fouillé dans la documentation et regardé et regardé, mais je n'arrive pas à trouver une sorte d'option méta ou de paramètre pour changer la clé "objets" pour décrire réellement les éléments retournés.Par exemple, disons que j'ai une liste d'emplacements dans un appel d'API et une liste de personnes dans un autre.J'aimerais pouvoir différencier la clé en "lieux" et "personnes".La vraie raison à cela est que j'utilise RestKit sur iOS et que je souhaite pouvoir configurer plusieurs mappages.
La solution
Les crochets de ressources alter_ * peut être utilisé pour modifier la structure des données.
Un exemple de ressource utilisant des "emplacements" serait:
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