2012-02-21 12 views
6

Per impostazione predefinita, quando si utilizza django-tastypie e recupero un elenco di risorse, la risposta è del formato:È possibile impostare la chiave degli oggetti 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/" 
    }, 
    ... 
    ] 
} 

ho scavato nella documentazione e guardato & guardato, ma io non riesco a trovare qualsiasi tipo di meta opzione o impostazione per cambiare la chiave "oggetti" per descrivere effettivamente gli articoli restituiti. Ad esempio, supponiamo di avere un elenco di posizioni in una chiamata API e un elenco di persone in un'altra. Mi piacerebbe essere in grado di differenziare la chiave per "luoghi" e "persone". La vera ragione di questo è perché sto usando RestKit su iOS e voglio essere in grado di configurare più mapping.

+0

Ho avuto lo stesso problema. Ho esaminato i documenti, il codice sorgente, persino il tracker dei problemi github e non ho trovato nulla, quindi ho rinunciato. Sono abbastanza sicuro che non sia possibile in questo momento, ma mi piacerebbe essere smentito. –

risposta

15

Gli hook di risorsa alter_* possono essere utilizzati per modificare la struttura dei dati.

una risorsa esempio usando 'luoghi' sarebbe:

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 
+0

Si noti che il nuovo attributo 'Meta.collection_name' fa la stessa cosa, ma è [incoerente] (https://github.com/toastdriven/django-tastypie/pull/467) per ora. –

Problemi correlati