zoukankan      html  css  js  c++  java
  • django 神奇的双下划线,通过外键的三种查询方式

    一,用于跨表操作

      只要是object后面字符串都是用双下划线__。其它地方用点.

    如:的values中的group_code__name.group_code是一个外键

    def list(request):
        host = models.host.objects.filter(id__gt=3).values('ip','port','group_code_id','group_code__name')
        for i in host:
            print(i['group_code__name'],i['group_code_id'])
        return render(request,'list.html',{'host':host,})  
    

    二,3种外键查询

    veiws:
    def list(request):
        v1 = models.host.objects.filter(id__gt=3)
        for i in v1:
            print(i.ip,i.port,i.group_code_id,i.group_code.name)
        v2 = models.host.objects.filter(id__gt=3).values('ip','port','group_code_id','group_code__name')
        for i in v2:
            print(i['ip'],i['port'],i['group_code__name'],i['group_code_id'])
        v3 = models.host.objects.filter(id__gt=3).values_list('ip','port','group_code_id','group_code__name')
        for i in v3:
            print(i[0],i[1],i[2],i[3])
        return render(request,'list.html',{'v1':v1,'v2':v2,'v3':v3})
    
    html:
    <h1>对象获取:</h1>
    <table border="1">
            <thead><td>ip</td><td>port</td><td>group_id</td><td>group_name</td></thead>
        {% for i in v1 %}
            <tr><td>{{ i.ip}}</td><td>{{ i.port}}</td><td>{{ i.group_code_id}}</td><td>{{ i.group_code.name}}</td></tr>
        {% endfor %}
    </table>
    <h1>字典获取:</h1>
    <table border="1">
            <thead><td>ip</td><td>port</td><td>group_id</td><td>group_name</td></thead>
        {% for i in v2 %}
            <tr><td>{{ i.ip}}</td><td>{{ i.port}}</td><td>{{ i.group_code_id}}</td><td>{{ i.group_code__name}}</td></tr>
        {% endfor %}
    </table>
    <h1>元组获取:</h1>
    <table border="1">
            <thead><td>ip</td><td>port</td><td>group_id</td><td>group_name</td></thead>
        {% for i in v3 %}
            <tr><td>{{ i.0}}</td><td>{{ i.1}}</td><td>{{ i.2}}</td><td>{{ i.3}}</td></tr>
        {% endfor %}
    </table>
    

      

    。。

  • 相关阅读:
    JavaScript之事件委托
    js中的事件委托(事件代理)详解
    CentOS已经安装命令,但提示找不到
    在Linux下创建7种类型的文件
    python源码安装的包的卸载
    新建文件所属组设置
    FFmpeg基础
    微服务架构概念
    一台 Java 服务器可以跑多少个线程?
    「学习的真正作用」​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​写出我心(一百三十八)
  • 原文地址:https://www.cnblogs.com/alex-hrg/p/9869976.html
Copyright © 2011-2022 走看看