这是我的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。 我怎么能这样做?
答案 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>