微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为整个结果集向Django Rest Framework结果添加额外的数据

如何解决为整个结果集向Django Rest Framework结果添加额外的数据

由于您似乎正在使用Rest框架中的ListView之一,因此可以覆盖类中的list()方法并在结果数据上设置新值,如下所示:

    def list(self, request, *args, **kwargs):
        response = super().list(request, args, kwargs)
        # Add data to response.data Example for your object:
        response.data['10_mi_count'] = 10 # Or wherever you get this values from
        response.data['20_mi_count'] = 30
        response.data['30_mi_count'] = 45
        return response

请注意,您的类必须直接或通过Rest Framework API(http://www.django-rest-framework.org/api- guide/generic-views#listmodelmixin)的GenericView继承ListModelMixin 。我真的不知道这是否是正确的方法,但这是一个快速解决方案。

希望能帮助到你!

解决方法

我正在使用Django Rest Framework,并且需要向结果集中添加额外的数据。具体来说,通常在哪里:

{
    "count": 45,"next": "http://localhost:8000/foo/bar?page=2","previous": null,"results": [
        {...}
    ]
}

我想添加额外的计数,如下所示:

{
    "count": 45,"10_mi_count": 10,"20_mi_count": 30,"30_mi_count": 45,"results": [
        {...}
    ]
}

在此示例中,额外计数仅是多少个对象的视场距离值小于键中描述的英里数。

我的问题是我不知道扩展和插入此行为的最佳位置在哪里。

理想情况下,无论结果是否分页,我都希望此方法可以工作,无需做任何假设。

我真正要追求的是朝着正确的方向点头(以及为什么这是正确的选择)。

我检查了文档,找不到任何描述如何添加类似内容的内容,但我很乐意在该分数上被证明是错误的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。