django model ValueQuerySet QuerySet 转换成JSON
这里我有4个字段需要使用外键,那么在调取数据的时候就可以使用两个'_'进行调取,当然条件必须需要从前端传进来
models.py
class HostInfo(models.Model):
host_ip = models.GenericIPAddressField()
usage = models.ForeignKey('ServiceLine')
sysversion = models.ForeignKey('SystemVersion')
sysuser = models.ForeignKey('SystemUser')
proposer = models.CharField(max_length=20)
dataversion = models.ForeignKey('DataBaseVersion')
tomversion = models.ForeignKey('TomcatVersion')
调用的时候需要了解的是:1、使用values进行调用返回的是valueQuerySet字段,而浊QuerySet,所以先转成list然后再使用json.dumps转成json
2、使用filter进行调用返回在是QuerySet对象,那么就可以直接使用serializers.serialize() 方法转化为json
def search(request):
keyword = request.GET.get('keyword', None)
if keyword:
obj = models.HostInfo.objects.filter(host_ip=keyword).values('host_ip',
'usage__serviceline',
'sysversion__systemversion',
'sysuser__systemuser',
'dataversion__databaseversion',
'tomversion__tomcatversion',
'proposer',
'id'
)
# obj = models.HostInfo.objects.filter(host_ip=keyword)
# data = serializers.serialize('json', obj)
data = json.dumps(list(obj))
return HttpResponse(data)
前端在拿到json对象后就可以使用字符串或者遍历的方式进行前端的显示
<script>
$("#search_btn").click(function () {
$.ajax({
url:'/cmdb/search',
type:'GET',
data:$("#search_input").serialize(),
dataType:'json',
success: function (response,stutas,xhr) {
$('#tb').empty();
$.each(response, function (i, item) {
var vfields = item; //这里不定义也行,在下面的调用中直接使用item,请忽略我不规范的缩进
$("tbody").append("<tr>"
+ "<td>" + i + "</td>"
+ "<td>" + vfields.host_ip +"</td>"
+ "<td>" + vfields.usage__serviceline + "</td>"
+ "<td>" + vfields.sysversion__systemversion + "</td>"
+ "<td>" + vfields.sysuser__systemuser + "</td>"
+ "<td>" + vfields.proposer + "</td>"
+ "<td>" + vfields.dataversion__databaseversion + "</td>"
+ "<td>" + vfields.tomversion__tomcatversion + "</td>"
+ "<td>" + "<a " + "href='/cmdb/edit-" + vfields.id + "'>编辑</a>" + "|" + "<a href='/cmdb/delete-" + vfields.id + "'>删除</a>" + "</td>"
+ "</tr>");
})
}
});
});
</script>
django model ValueQuerySet QuerySet 转换成JSON的更多相关文章
- 将Model对象转换成json文本或者json二进制文件
将Model对象转换成json文本或者json二进制文件 https://github.com/casatwy/AnyJson 注意:经过测试,不能够直接处理字典或者数组 主要源码的注释 AJTran ...
- Java中的List转换成JSON报错(五)
1.错误描述 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/beanu ...
- Java中的List转换成JSON报错(四)
1.错误描述 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/colle ...
- Java中的List转换成JSON报错(二)
1.错误描述 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/loggi ...
- Java中的List转换成JSON报错(一)
1.错误描述 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/ ...
- DataTable 转换成 Json的3种方法
在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...
- asp.net dataTable转换成Json格式
/// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"> ...
- C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。
C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...
- List转换成json格式字符串,json格式字符串转换成list
一.List转换成json字符串 这个比较简单,导入gson-x.x.jar, List<User> users = new ArrayList<User>(); Gson g ...
随机推荐
- ZOJ 3609 Modular Inverse(拓展欧几里得求最小逆元)
Modular Inverse Time Limit: 2 Seconds Memory Limit: 65536 KB The modular modular multiplicative ...
- POJ 2549 Sumsets(折半枚举+二分)
Sumsets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11946 Accepted: 3299 Descript ...
- laravel 环境自编译过程
[原创] 看到此文的朋友看完后也许会失望,但我尽最大努力不让搜友们失望,以下是自己操作的笔记用以整理提高 虽然 laravel 官方已给出了安装 laravel 框架所需的环境盒子 使用Vagrant ...
- 【BZOJ】1008: [HNOI2008]越狱(组合数学)
题目 题目描述 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 输入输出格式 ...
- 安装Oracle 10g RAC是否需要安装HACMP
实际上无论在哪个操作系统(AIX,HP-UX,Solaris,Linux)上安装Oracle10g RAC都不再需要Vendor Clusterware(IBM的HACMP,HP的Service Gu ...
- 【Java】编程
3.Java I/O流输入输出,序列化,NIO,NIO.2 https://www.cnblogs.com/jiangwz/p/9193776.html 4.JAVA调用WCF(转) https:// ...
- [Z]CiteSeer统计的计算机领域的期刊和会议的影响因子
稍微有点早,04年的,但很全 http://emuch.net/html/200510/128286.html 另附一个不明来路的排名:http://www.wi2.uni-erlangen.de/_ ...
- IOS 后台之长时间任务 beginBackgroundTaskWithExpirationHandler 申请后台十分钟 600秒
10分钟 beginBackgroundTaskWithExpirationHandler,beginBackgroundTaskWithName endBackgroundTask 定义变量 UIB ...
- 4.Hadoop集群搭建之启动
配置好Hadoop.HDFS.YARN.Zookeeper集群后,需要按照顺序启动. 前期准备 配置好Hadoop.HDFS.YARN.Zookeeper集群 先stop掉所有的hadoop服务 使用 ...
- visjs使用小记-2.option参数注释说明
对部分参数进行中文说明,后续补充 var options = { nodes:{//节点配置 borderWidth: 1,//节点边框的宽度,单位为px borderWidthSelected: 2 ...