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>
    复制代码
    https://www.cnblogs.com/baylorqu/p/7909892.html
  • 相关阅读:
    241. Different Ways to Add Parentheses java solutions
    89. Gray Code java solutions
    367. Valid Perfect Square java solutions
    46. Permutations java solutions
    116. Populating Next Right Pointers in Each Node java solutions
    153. Find Minimum in Rotated Sorted Array java solutions
    判断两颗树是否相同
    求二叉树叶子节点的个数
    求二叉树第k层的结点个数
    将二叉排序树转换成排序的双向链表
  • 原文地址:https://www.cnblogs.com/hedianzhan/p/9613306.html
Copyright © 2011-2022 走看看