Можно ли установить ключ объектов django-tastypie? - PullRequest
6 голосов
/ 21 февраля 2012

По умолчанию, при использовании 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/"
    },
    ...
    ]
}

Я копался в документации и посмотрел и посмотрел, но не могуПохоже, что нашли какой-либо мета-параметр или параметр, чтобы изменить ключ «objects» для фактического описания возвращаемых элементов.Например, допустим, у меня есть список местоположений в одном вызове API и список людей в другом.Я хотел бы иметь возможность различать ключ к «местоположениям» и «людям».Настоящая причина этого в том, что я использую RestKit на iOS и хочу иметь возможность настроить несколько сопоставлений.

1 Ответ

15 голосов
/ 21 февраля 2012

Перехватчики ресурсов 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
...