2012-02-21 15 views
6

Por defecto, cuando se utiliza Django-tastypie y obtener una lista de recursos, la respuesta es del formato:¿Es posible configurar la clave de objetos 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/" 
    }, 
    ... 
    ] 
} 

He excavado en la documentación y se veía & miraba, pero me parece que no puede encontrar cualquier tipo de meta opción o configuración para cambiar la clave "objetos" para describir realmente los elementos devueltos. Por ejemplo, supongamos que tengo una lista de ubicaciones en una llamada de API y una lista de personas en otra. Me gustaría poder diferenciar la clave de "ubicaciones" y "personas". La razón real de esto es porque estoy usando RestKit en iOS y quiero poder configurar múltiples asignaciones.

+0

que tenían el mismo problema. Busqué entre los documentos, el código fuente, incluso el rastreador de problemas github y no pude encontrar nada, así que me di por vencido. Estoy bastante seguro de que no es posible en este momento, pero me gustaría que se demuestre que estoy equivocado. –

Respuesta

15

Los ganchos de recursos alter_* se pueden utilizar para modificar la estructura de los datos.

Un recurso ejemplo usando 'lugares' sería:

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

Tenga en cuenta que el nuevo atributo 'Meta.collection_name' hace lo mismo, pero es [inconsistente] (https://github.com/toastdriven/django-tastypie/pull/467) por ahora. –

Cuestiones relacionadas