2

这是我的应用程序/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 输出中再添加一个字符串作为“状态”,当过滤成功时为 True,当数据库中没有与给定电子邮件对应的条目时为 False。我怎样才能做到这一点 ?

4

1 回答 1

3

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

假设您没有重组对象列表元数据(tastypie 的分页器将对象列表包装在字典中,其中objects指向列表、total_count保存对象总数等),您可以执行以下操作:

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

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

于 2013-10-06T10:30:30.273 回答