python - Django json响应中的数据操作
问题描述
我想遍历设备对象并添加一个比较。
json 如下所示。我想比较一下 if status
is 1 为每个设备添加新字段"status" : "available"
else "status" : "Occuppied"
。我怎么能像那样操作json?
看法:
from django.core import serializers
def ApplicationDetail(request, application_id, cat):
device = Device.objects.all().filter(category=cat)
data = serializers.serialize('json', device)
return HttpResponse(data, content_type='application/json')
JSON:
[
{
"model":"applications.device",
"pk":"70b3d5d720040338",
"fields":{
"icon_name":"amr.jpg",
"application_id":13,
"status":1
}
},
{
"model":"applications.device",
"pk":"70b3d5d72004034c",
"fields":{
"icon_name":"amr.jpg",
"application_id":13,
"status":0
}
}
]
解决方案
Django 的内置序列化程序非常基础,如果您正在构建某种 JSON API,我强烈建议您查看 Django REST 框架(https://www.django-rest-framework.org/)。它允许您构建自定义序列化程序。
要回答您的问题,使用'python'
序列化程序、操作数据然后返回 a可能是最简单的方法JsonResponse
,如下所示:
from django.http import JsonResponse
...
data = serializers.serialize('python', device)
for row in data:
row['fields']['status'] = 'available' if row['fields']['status'] else 'occupied'
return JsonResponse(data, safe=False)
为了序列化 dict 以外的对象,您必须将 safe 参数设置为 False https://docs.djangoproject.com/en/3.0/ref/request-response/#jsonresponse-objects
推荐阅读
- python - 重新标记 pandas 上的所有索引
- elasticsearch - Elasticsearch 计算嵌套文档中某个值的出现次数
- azure - 如何将活动日志中的对象 ID 与用户、SPN 声明或 UPN 声明相关联
- cmake - 制作。项目文件生成后执行命令
- firebase - 无法从 Firebase 数据库中获取数据
- r - 获取 R 中函数的模型重要性和 adj R
- angular - Angular 7 HTTP Post 500 内部服务器错误
- javascript - 如何杀死击中敌人的武器子弹?移相器 2.7.5
- python - Discord.py - Storing player warns
- algorithm - 找到最好和最差的 O()