【问题标题】:Return single object instead of array返回单个对象而不是数组
【发布时间】:2013-12-22 11:49:56
【问题描述】:

我在使用 Django-Tastypie 制作的 API 中创建了一个资源,该资源基于作为 url 参数提供的哈希值返回单个对象。到目前为止,一切都按预期工作,但资源不是只返回一个 JSON 对象,而是返回一个带有单个对象的数组。因为我想将资源连接到 Backbone-Model,所以只有对象会更方便。

资源:

class ObjectResource(CommonResource):
    class Meta(CommonResource.Meta):
        queryset = ObjectModel.objects.all()
        resource_name = 'object'
        allowed_methods = ['get']
        authorization = Authorization()

    def obj_create(self, bundle, **kwargs):
        return super(ObjectResource, self).obj_create(bundle, hash_value=self.hash_value)

    def authorized_read_list(self, object_list, bundle):
        return object_list.filter(hash_value=self.hash_value)

Json 响应

[{"app_enabled": false, "enable_global_note": false, "enable_guest_order_notes": true, "enable_guest_orders": false, "enable_in_house": false, "guest_orders_active": false, "hash_value": "33d96c3c094b54dd918407c3ef79b219", "id": 34, "name": "Spätzlerei", "resource_uri": "", "slug": "spaetzlerei", "state": 0, "time_added": "2013-08-01T20:11:34.689550", "time_modified": "2013-08-06T10:37:01.907677", "vendor": "myorderbird"}]

需要 Json 响应:

{"app_enabled": false, "enable_global_note": false, "enable_guest_order_notes": true, "enable_guest_orders": false, "enable_in_house": false, "guest_orders_active": false, "hash_value": "33d96c3c094b54dd918407c3ef79b219", "id": 34, "name": "Spätzlerei", "resource_uri": "", "slug": "spaetzlerei", "state": 0, "time_added": "2013-08-01T20:11:34.689550", "time_modified": "2013-08-06T10:37:01.907677", "vendor": "myorderbird"}

任何关于如何实现这一点的指针将不胜感激。

【问题讨论】:

  • 既然你只想返回一个对象,你为什么要_list方法?也许看看替换 _detail 的东西(和 resource_uri_kwargs...)

标签: django json backbone.js tastypie


【解决方案1】:

您必须使用authorized_read_detail 而不是authorized_read_list 才能检索单个对象而不是具有一个对象的列表。

【讨论】:

    猜你喜欢
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 2018-05-28
    相关资源
    最近更新 更多