13 自关联

 

class AreaInfo(models.Model):
    '''地区模型类'''
    #地区名称
    atitle = models.CharField(max_length=20)
    #关系属性,代表当前地区的父级地区(跟自身建立关联)
    aParent = models.ForeiKey('self',null=True,blank=True)

终端进入批量数据所在的那个文件目录,执行mysql -uroot,进入mysql,切换到要使用的数据库,然后批量执行一个sql语句:

source areas.sql;

areas.sql的内容如下:

insert into booktest_arealinfo value('110000','京城',NULL);
insert into booktest_arealinfo value('110100','北京市','110000');
insert into booktest_arealinfo value('110001','东城区','110100');
insert into booktest_arealinfo value('110002','西城区','110100');
insert into booktest_arealinfo value('110003','丰台区','110100');
...

views中定义一个函数:

def areas(request):
    '''获取广州市的上级和下级地区'''
    # 获取各种事的信息
    area = AreaInfo.objects.get(atitle='北京市')
    # 查询广州市的上级地区
    parent = area.aParent
    # 查询下级地区
    child = area.areainfo_set.all()

    return render(request,'booktest/areas.html',{'area':area,'parent':parent,'child':child})

模版文件:

<!DOCTYPE html>
<html>
<head>
    <title>areas</title>
</head>
<body>
    <h1>{{area.atitle}}</h1>
    <h1>上级地区</h1>
    <h2>
        <ul>{{parent.atitle}}</ul>
    </h2>
    <h2>下级地区:</h2>
    <ul>
        {% for a in child %}
        <li>{{ a.atitle }}</li>
        {%endfor%}
    </ul>

</body>
</html>

 

posted @ 2019-08-06 03:56  greenfan  阅读(111)  评论(0)    收藏  举报