【问题标题】:Is it possible to set the django-tastypie objects key?是否可以设置 django-tastypie 对象键?
【发布时间】:2012-03-11 20:57:15
【问题描述】:

默认情况下,使用 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 调用中的位置列表和另一个中的人员列表。我希望能够区分“位置”和“人”的关键。真正的原因是因为我在 iOS 上使用 RestKit,并且希望能够设置多个映射。

【问题讨论】:

  • 我遇到了同样的问题。我翻遍了文档、源代码,甚至是 github 问题跟踪器,都找不到任何东西,所以我放弃了。我很确定目前这是不可能的,但我很想被证明是错误的。

标签: django restkit tastypie


【解决方案1】:

资源挂钩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

【讨论】:

  • 请注意,新的Meta.collection_name 属性做同样的事情,但现在是inconsistent
猜你喜欢
  • 2020-10-04
  • 2011-03-03
  • 1970-01-01
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-05
相关资源
最近更新 更多