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 ...
随机推荐
- 关于使用PyExecJS+nodejs使用与js反混淆
来源:https://cuiqingcai.com/5024.html 梳理这篇博客的时候出问题,我默认的是jscript作为pyexcJs的引擎,问题很大,大部分的js都无法加载,各种包用不了,只能 ...
- nginx的编译安装以及启动脚本编写
Nginx的编译安装和启动脚本的编写 Nginxd的功能强大,可以实现代理.负载均衡等企业常用的功能.下面介绍一下nginx的编译安装方法: 1. 下载 官方下载地址:http://nginx.org ...
- 《C++ Primer》读书笔记
在C++中,基类必须指出希望派生类重新定义哪些函数,定义为virtual的函数是基类期待派生类重新定义的,基类希望派生类继承的函数不能定义为虚函数. 引用和指针的静态类型与动态类型可以不同,这是C++ ...
- ALSA声卡08_从零编写之框架_学习笔记
1.整体框架 (1)图示((DAI(全称Digital Audio Interface)接口)) 在嵌入式系统里面,声卡驱动是ASOC,是在ALSA驱动上封装的一层,包括以下三大块 (2)程序框架 m ...
- FBVector
folly/FBVector.h Simply replacing std::vector with folly::fbvector (after having included the folly/ ...
- C++中结构体与类的区别 2
这里有两种情况下的区别.(1)C的struct与C++的class的区别.(2)C++中的struct和class的区别.在第一种情况下,struct与class有着非常明显的区别.C是一种过程化的语 ...
- sqlldr加载 数据文件的字段超出最大长度
SQLLOAD数据的时候,建表给的字段给够了,建表已经给到VHARCHAR2(1024)了,实际数据是VHARCHAR2(256).加载报错"数据文件的字段超出最大长度"查了半天, ...
- JBPM4.4学习笔记
1.JBPM4表说明: JBPM4_DEPLOYMENT 流程定义表 JBPM4_DEPLOYPROP 流程定义属性表 JBPM4_EXECUTION 流程实例表 JBPM4_HIST_ACTINST ...
- 关于data-属性
关于data-属性 现有需求如下,也就是类似做一个tab页的切换如下图: 因为这里要记录一下jquery里的“data-属性”的用法,所以忽略类似的组件. 往HTML标签上添加任意以 "da ...
- 伸展树(SplayTree)的实现
优点:伸展树(splay tree)是一种能自我调整的二叉搜索树(BST).虽然某一次的访问操作所花费的时间比较长,但是平摊(amortized) 之后的访问操作(例如旋转)时间能达到O(logn)的 ...