这里我有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的更多相关文章

  1. 将Model对象转换成json文本或者json二进制文件

    将Model对象转换成json文本或者json二进制文件 https://github.com/casatwy/AnyJson 注意:经过测试,不能够直接处理字典或者数组 主要源码的注释 AJTran ...

  2. Java中的List转换成JSON报错(五)

    1.错误描述 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/beanu ...

  3. Java中的List转换成JSON报错(四)

    1.错误描述 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/colle ...

  4. Java中的List转换成JSON报错(二)

    1.错误描述 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/loggi ...

  5. Java中的List转换成JSON报错(一)

    1.错误描述 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/ ...

  6. DataTable 转换成 Json的3种方法

    在web开发中,我们可能会有这样的需求,为了便于前台的JS的处理,我们需要将查询出的数据源格式比如:List<T>.DataTable转换为Json格式.特别在使用Extjs框架的时候,A ...

  7. asp.net dataTable转换成Json格式

    /// <summary> /// dataTable转换成Json格式 /// </summary> /// <param name="dt"> ...

  8. C#中对象,字符串,dataTable、DataReader、DataSet,对象集合转换成Json字符串方法。

    C#中对象,字符串,dataTable.DataReader.DataSet,对象集合转换成Json字符串方法. public class ConvertJson { #region 私有方法 /// ...

  9. List转换成json格式字符串,json格式字符串转换成list

    一.List转换成json字符串 这个比较简单,导入gson-x.x.jar, List<User> users = new ArrayList<User>(); Gson g ...

随机推荐

  1. canvas之画一条线段

    var canvas=document.getElementById("canvas"); //设置绘图环境 var cxt=canvas.getContext('2d'); // ...

  2. Druid.io系列(一):简介

    原文链接: https://blog.csdn.net/njpjsoftdev/article/details/52955676 Druid.io(以下简称Druid)是面向海量数据的.用于实时查询与 ...

  3. Mysql踩过的坑

    数据表示例 1.NOT IN 结果集为空 ①SELECT class_no FROM t_student; 结果为: ②SELECT * FROM t_student where class_no n ...

  4. 4_python之路之模拟工资管理系统

    python之路之模拟工资管理系统 1.程序说明:Readme.txt 1.程序文件:salary_management.py info.txt 2.程序文件说明:salary_management. ...

  5. 原生JS模拟jQuery $

    模拟jQuery的$选择器 在获取元素的时候使用ID选择器,返回的是一个对象:使用类选择器或者标签选择器返回可能是一组元素:将获取到的一个或一组元素进行一个简易的封装封装成一个TQObject 什么是 ...

  6. oracle的同义词总结

      oracle的同义词总结   从字面上理解就是别名的意思,和视图的功能类似.就是一种映射关系.   同义词拥有如下好处:   节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;  扩展的 ...

  7. Linux6系统安装

  8. [js方法pk]之instanceof() vs isPrototypeOf() hasOwnProperty() vs propertyIsEnumerable()

    这几个方法在js的高级编程中经常用到,对于新手来说可能还不知道他们有什么区别,我把我的体会总结下来,供大家参考: 首先,定义一个对象: function Parent() {this.name = & ...

  9. vue图片、背景图片路径问题

    vue图片.背景图片路径问题 vue中引入图片经常会出现路径问题,在此记录一下: 1.组件中 <img> 引用图片 <img src="../assets/img/logo ...

  10. BDE View not exists

     Table does not exist. [Microsoft][ODBC SQL Server Driver][SQL Server]对象名 'vw1' 无效.