第06章节-Python3.5-一对多跨表操作

  • 在Navicat的app01_host添加数据:

image.png
  • 刷新浏览器


    image.png
  • 效果图:


    image.png
image.png
image.png
  • 所修改目录(过程)

所修改目录
  • urls.py

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    # $能避免同前缀名如(r'^business_add...),然后business不执行
    url(r'^business$', views.business),
    url(r'^host$', views.host),
]

  • views.py

from django.conf.urls import url
from django.contrib import admin
from app01 import views

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    # $能避免同前缀名如(r'^business_add...),然后business不执行
    url(r'^business$', views.business),
    url(r'^host$', views.host),
]

  • models.py
from django.db import models

# Create your models here.


# 公司
class Business(models.Model):
    # id
    caption = models.CharField(max_length=32)
    code = models.CharField(max_length=32,null=True,default="SA")


# 主机
class Host(models.Model):
    nid = models.AutoField(primary_key=True)
    hostname = models.CharField(max_length=32,db_index=True)
    # GenericIPAddressField(Field)字符串类型,Django Admin以及ModelForm中提供验证 Ipv4和Ipv6
    ip = models.GenericIPAddressField(protocol="ipv4",db_index=True)
    port = models.IntegerField()
    b = models.ForeignKey(to="Business", to_field='id')


  • 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>主机ID</th>-->
                <th>主机名</th>
                <th>IP</th>
                <th>端口</th>
                <!--<th>业务线ID</th>-->
                <th>业务线名称</th>
                <!--<th>业务线编码</th>-->
            </tr>
        </thead>
        <tbody>
            {% for row in v1 %}
                <tr hid="{{ row.nid }}" bid="{{ row.b_id }}">
                    <!--<td>{{ row.nid }}</td>-->
                    <td>{{ row.hostname }}</td>
                    <td>{{ row.ip }}</td>
                    <td>{{ row.port }}</td>
                    <!--<td>{{ row.b_id }}</td>-->
                    <td>{{ row.b.caption }}</td>
                    <!--<td>{{ row.b.code }}</td>-->
                </tr>
            {% endfor %}
        </tbody>
    </table>

</body>
</html>
  • business.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>业务线列表(对象)</h1>
    <ul>
        {% for row in v1 %}
            <li>{{ row.id }} - {{ row.caption }} - {{ row.code }}</li>
        {% endfor %}
    </ul>
    <h1>业务线列表(字典)</h1>
    <ul>
        {% for row in v2 %}
            <li>{{ row.id }} - {{ row.caption }}</li>
        {% endfor %}
    </ul>
    <h1>业务线列表(元组)</h1>
    <ul>
        {% for row in v3 %}
            <li>{{ row.0 }} - {{ row.1 }}</li>
        {% endfor %}
    </ul>

</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容