Django框架学习笔记(14.一对多跨表操作)

来源:互联网 发布:linux开机自启动脚本 编辑:程序博客网 时间:2024/06/06 13:18

继续上次的Django工程,在数据库中加入一些数据:

在views.py加入:

def host(request):    v1 = models.Host.objects.filter(nid__gt=0)    return render(request, 'host.html', {'v1': v1})


host.html:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body><h1>业务线列表</h1><table border="1">    <thead>    <tr>        <th>主机名</th>        <th>IP</th>        <th>端口</th>        <th>业务线名称</th>    </tr>    </thead>    <tbody>    {% for row in v1 %}        <tr hid="{{ row.nid }}" bid="{{ row.b_id }}">            <td>{{ row.hostname }}</td>            <td>{{ row.ip }}</td>            <td>{{ row.port }}</td>            <td>{{ row.b.caption }}</td>        </tr>    {% endfor %}    </tbody></table></body></html>


运行:



同样这里也可以有三种方法:

views.py:

def host(request):    v1 = models.Host.objects.filter(nid__gt=0)    v2 = models.Host.objects.filter(nid__gt=0).values('nid', 'hostname', 'b_id', 'b__caption')    v3 = models.Host.objects.filter(nid__gt=0).values_list('nid', 'hostname', 'b_id', 'b__caption')    return render(request, 'host.html', {'v1': v1, 'v2': v2, 'v3': v3})


host.html:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body><h1>业务线列表(对象)</h1><table border="1">    <thead>    <tr>        <th>主机名</th>        <th>IP</th>        <th>端口</th>        <th>业务线名称</th>    </tr>    </thead>    <tbody>    {% for row in v1 %}        <tr hid="{{ row.nid }}" bid="{{ row.b_id }}">            <td>{{ row.hostname }}</td>            <td>{{ row.ip }}</td>            <td>{{ row.port }}</td>            <td>{{ row.b.caption }}</td>        </tr>    {% endfor %}    </tbody></table><h1>业务线列表(字典)</h1><table border="1">    <thead>    <tr>        <th>主机名</th>        <th>业务线名称</th>    </tr>    </thead>    <tbody>    {% for row in v2 %}        <tr hid="{{ row.nid }}" bid="{{ row.b_id }}">            <td>{{ row.hostname }}</td>            <td>{{ row.b__caption }}</td>        </tr>    {% endfor %}    </tbody></table><h1>业务线列表(对象)</h1><table border="1">    <thead>    <tr>        <th>主机名</th>        <th>IP</th>        <th>端口</th>        <th>业务线名称</th>    </tr>    </thead>    <tbody>    {% for row in v1 %}        <tr hid="{{ row.nid }}" bid="{{ row.b_id }}">            <td>{{ row.hostname }}</td>            <td>{{ row.ip }}</td>            <td>{{ row.port }}</td>            <td>{{ row.b.caption }}</td>        </tr>    {% endfor %}    </tbody></table><h1>业务线列表(元组)</h1><table border="1">    <thead>    <tr>        <th>主机名</th>        <th>业务线名称</th>    </tr>    </thead>    <tbody>    {% for row in v3 %}        <tr hid="{{ row.0 }}" bid="{{ row.2 }}">            <td>{{ row.1 }}</td>            <td>{{ row.3 }}</td>        </tr>    {% endfor %}    </tbody></table></body></html>


运行后:



原创粉丝点击