zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    nginx配置文件语法高亮显示方法
    GitLab服务器搭建及配置
    Git服务器搭建及配置
    SVN-Server搭建及配置
    python之subprocess
    jenkins配置从节点
    jenkins邮箱配置以及结合ansible进行批量构建
    tomcat+svn+maven+jenkins实现自动构建
    tomcat结合memcached构建session服务器
    基于tomcat集群做session共享
  • 原文地址:https://www.cnblogs.com/baylorqu/p/7909892.html
Copyright © 2011-2022 走看看