自关联是一种特殊的一对多的关系。

案例:显示广州市的上级地区和下级地区。

地区表:id, atitle, aParent_id;        # (areas.sql 为批量插入语句)

mysql终端中批量执行sql语句:source areas.sql;

创建好模型类:

# 自关联的 ForeignKey 第一个参数为self

class AreaInfo(models.Model):"""地区模型类"""# 地区名称atitle = models.CharField(max_length=20)# 关联属性,代表当前地区的父级地区aParent = models.ForeignKey('self', null=True, blank=True,on_delete=models.CASCADE)

然后通过shell生成表 ,然后进入表中查看表的结构:

有 aParent_id 的外键     #  自关联

建立视图函数,并且添加到路由中

def areas(request):"""获取广州市的上级地区和下级地区"""# 1.获取广州市的信息area = AreaInfo.objects.get(atitle='广州市')# 2.查询广州市的信息parent = area.aParent# 3.查询广州市的下级地址children = area.areainfo_set.all()     # 一对多查询# 使用模板return render(request, 'booktest/areas.html',{'area': area,'parent': parent, 'children': children})

然后在模板中使用

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>自关联案例</title>
</head>
<body><h1>当前地区</h1>{{ area.atitle }}<br/><h2>父级地区</h2>{{ parent.atitle }}<br/><h3>下级地区</h3><ul>{% for child in children %}<li>{{ child.atitle }}</li>{% endfor %}</ul>
</body>
</html>

运行程序展示出来

Django框架(15.Django中的自关联)相关推荐

  1. Django框架(23.Django中的模板的标签、变量、过滤器和注释)

    模板 作为Web框架,Django提供了模板,用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器.模版致力于表达外观 ...

  2. Django框架(19.Django中获取url的参数(位置参数以及关键字参数))

    捕获url参数 进行url匹配时,把所需要的捕获的部分设置成一个正则表达式组,这样django框架就会自动把匹配成功后相应组的内容作为参数传递给视图函数. 位置参数 位置参数,参数名可以随意指定   ...

  3. Django框架(8.Django中的模板文件的使用和模板变量的简单使用)

    为什么使用模板 通过视图可以给用户返回一些字符串等等, 那如何向请求者返回一个漂亮的页面呢? 肯定需要用到html.css,如果想要更炫的效果还要加入js,问题来了,这么一堆字段串全都写到视图中,作为 ...

  4. Django框架(6.django后台管理/通过后台对数据表的增删改)

    1.django项目中的admin.py  即:  后台管理相关文件 使用Django提供的相关管理机制的步骤 1.本地化 语言和时区的本地化    ( 修改项目中的settings.py的文件) 2 ...

  5. Django框架(1.Django框架的简介)

    Django简介 Django,发音为[`dʒæŋɡəʊ],是用python语言写的开源web开发框架,并遵循MVC设计. 劳伦斯出版集团为了开发以新闻内容为主的网站,而开发出来了这个框架,于2005 ...

  6. Django框架 from django.core.files.uploadedfile import InMemoryUploadedFile

    2019独角兽企业重金招聘Python工程师标准>>> 作者:朱涛 链接:https://www.zhihu.com/question/23332111/answer/2423961 ...

  7. Django框架(14.Django中模型类的关系,以及模型类关联查询)

    Django中模型类的关系,以及模型类关联查询 1.模型类关系 1.1 一对多关系 1.2多对多关系 1.3 一对一关系 1.4 一对多举例: 1.5 多对多举例: 1.6 一对一举例: 2.关联查询 ...

  8. Django框架(9.Django中的配置使用MySQL数据库以及页面重定向)

    ORM框架简介 ORM框架还可以通过方便的配置就可以进行数据库的切换 进入虚拟环境,创建一个新的项目,django-admin  startproject test2  (test2为项目名) 创建好 ...

  9. Django框架(5.django中模型类建立关系和多表关系查询)

    1.建立好模型类: from django.db import models# 设计和模型对应的类,(模型类) # Create your models here.# 一类 # 图书类 class B ...

最新文章

  1. Activity之间的信息传递方式
  2. Java中如何获取字符串的Unicode编码
  3. 链表!比数组更适合做增删操作的数据结构
  4. Override and Overload (重写和重载)
  5. vc6.0垃圾文件清理工具_C盘空间爆满,详细清理方法介绍
  6. SGU 325 Palindrome(贪心)
  7. oracle odbc驱动 linux,linux下oracle的odbc驱动的安装与配置
  8. 对单个文件禁用arc
  9. qt新建html5,QT Creator无法创建纯C++项目或HTML5项目(QT Creator直接关闭)
  10. 数据库学习笔记4-隔离级别 Read Committed
  11. SQL Server 2012基本介绍
  12. win10下装黑苹果双系统
  13. 下载哔哩哔哩代码php,哔哩哔哩电脑客户端 v1.4.4 官方最新版
  14. 长期不上班,人会废掉吗?
  15. ElasticSearch(8)-分布式搜索
  16. 大数据可视化课程笔记 6
  17. Android中如何计算图片占用的实际内存大小?
  18. mysql ext3 ext4_Mysql如何选择文件系统?(ext4 vs ext3 vs jfs vs xfs vs reise
  19. 逃离一线城市程序员的Plan B
  20. 优秀Java书单整理

热门文章

  1. java 限制日期格式_Java日期格式
  2. Struct2中三种获取表单数据的方式
  3. Spring Boot 内置Tomcat——getServletContext().getRealPath()为临时目录问题解决方案
  4. Vue——Vue-Router的push和replace方法[Uncaught (in promise) Error]解决方案
  5. MAC + Tomcat——部署Web项目时Tomcat启动成功,但部署的Web项目404错误
  6. 那天的延长线在今天β
  7. java解压文件、复制文件、删除文件代码示例
  8. 2021年 研考 国家线 公布
  9. Filter和Listener-学习笔记01【Filter 快速入门】
  10. ThhinkPHP5隐藏入口文件index.php