如何使用tastypie在json中添加额外的消息?

时间:2013-10-05 10:16:28

标签: python json tastypie

这是我的app / api.py

from app.models import Person
from tastypie.resources import ModelResource, ALL, ALL_WITH_RELATIONS
    class PersonResource(ModelResource):
        class Meta:
            queryset = Person.objects.all()
            resource_name='person
            # filtering = { "email" : ALL,"dob":ALL,"mobile":ALL}
            filtering = {
                'email': ALL,
                'mobile': ALL,
                'dob': ALL,
                }

成功返回json:/api/person/?format=json@email=abcd@example.com

但我想在json输出中再添加一个字符串作为“status”,当过滤成功时将为True,如果数据库中没有与给定电子邮件对应的条目,则为False。 我怎么能这样做?

1 个答案:

答案 0 :(得分:3)

最简单的方法是定义自己的alter_list_data_to_serialize方法。在返回问题中的get_list请求的响应之前调用该方法,并且应该返回将在响应中序列化的最终字典。

假设你没有重组对象列表元数据(tastypie的paginator将对象的列表包含在objects指向列表的字典中,total_count保存总对象的数量等等,你可以做到以下几点:

def alter_list_data_to_serialize(self, request, data):
    data['status'] = data['total_count'] != 0
    return data

否则,如果您使用自定义分页器并希望在所有资源中包含status密钥,则可以修改Paginator.page()方法以添加status密钥。< / p>