在创建好的 app3 目录下的 models.py 中
创建对 数据表(学生和班级)的描述
分析:
学生和班级是一对多的关系
班级表的设计

class Grade(models.Model):
# 设置班级名字
g_name = models.CharField(max_length=32)

学生表的设计

class Student(models.Model):
# 设置学生名字
s_name = models.CharField(max_length=16) # 在学生中添加班级,进行级联
s_grade = models.ForeignKey(Grade,on_delete=models.CASCADE)
# 设置班级为外键,让学生去找老师,速度快 注:
1.使用 models.ForeignKey 声明外键
2.on_delete=models.CASCADE 一定要有,不然会报错

生成迁移文件
python manage.py makemigrations 进行迁移
python manage.py migrate

 

 


以上为添加到表中的元素

学生查询班级名字
在views.py 中添加函数方法,让学生获取班级姓名
此处应该注意数据库表 models.py 中的设计,使用的是类中定义的属性 def get_grade(request):
# 通过学生 -> 班级
stu = Student.objects.get(pk = 1)
# 获取学生
grade = stu.s_grade
# 获取学生所在的班级
return HttpResponse("Grade: %s"%(grade.g_name))
# 获取班级的名字 注:
pk 是主键的意思
. 后面的名字都是自己设置的 类中的属性名

在 urls 中添加 get_grade  刚刚创建的函数

urlpatterns = [
url(r'index',views.index),
url(r'getgrade',views.get_grade)
]

运行后,结果如下

 

 


班级查询学生名字
在 views.py 中添加 对应的获取函数
函数名:get_students def get_students(request):
# 通过班级获取学生信息
grade = Grade.objects.get(pk = 1)
# 获取学生集合
stus = grade.student_set.all()
context = {
# 添加到字典的值中
'students':stus
}
return render(request,'students_list.html',context = context)
# 使用 render 显示网页 注:
1.获取全部 grade.student_set.all() 学生信息
2.将获取到的信息存入到 context 的值中,才会在网页里进行遍历
这里的键名,是网页中遍历的可迭代对象
3.使用 render 网页才会被渲染出来

在 templates 中添加 html 文档
students_list.html <h3>
{% for stu in students %}
<li> {{ stu.s_name }}</li>
{% endfor %}
</h3> 注:
1.使用 for 循环对传入的 context 参数进行遍历
2.使用 {% 语句 %} 的格式写入 python 代码
3.{{endfor}} 在结尾后

在 urls.py 中添加获取学生的函数

urlpatterns = [
url(r'index',views.index),
url(r'getgrade',views.get_grade),
url(r'getstudent',views.get_students)
]

运行结果

 


数据库表中数据

 


2020-05-08

Django学习路8_学生表和班级表级联并相互查询信息的更多相关文章

  1. Django学习路5_更新和删除数据库表中元素

    查找所有的元素 Student.objects.all() 查找单个元素 Student.objects.get(主键=值) 主键 pk = xxx 更新数据库数据后进行保存 stu.save() 删 ...

  2. 六、Django学习之基于下划线的跨表查询

    六.Django学习之基于下划线的跨表查询 一对一 正向查询的例子为 已知用户名,查询用户的电话号码.反向查询例子反之. 正向查询 其中下划线前的表示表名,无下划线的表示的是Author表 resul ...

  3. Django学习笔记(10)——Book单表的增删改查页面

    一,项目题目:Book单表的增删改查页面 该项目主要练习使用Django开发一个Book单表的增删改查页面,通过这个项目巩固自己这段时间学习Django知识. 二,项目需求: 开发一个简单的Book增 ...

  4. Django学习路12_objects 方法(all,filter,exclude,order by,values)

    Person.objects.all() 获取全部数据 def get_persons(request): persons = Person.objects.all() # 获取全部数据 contex ...

  5. Django学习路16_获取学生所在的班级名

    在 urls.py 中先导入getgrades from django.conf.urls import url from app5 import views urlpatterns = [ url( ...

  6. Django学习路31_使用 locals 简化 context 写法,点击班级显示该班学生信息

    urls 中 进行注册 url(r'grades',views.grades) views 中编写函数 def grades(request): grades_list = Grade.objects ...

  7. Django学习路34_models 文件创建数据表

    from django.db import models # Create your models here. class BookInfoManager(models.Manager): '''图书 ...

  8. Django学习路10_创建一个新的数据库,指定列名并修改表名

    在 models.py 中添加 from django.db import models # Create your models here. class Person(models.Model): ...

  9. Django学习路4_数据库添加元素,读取及显示到网页上

    在 views 中实现对数据库的添加和读取数据库 添加数据 对象 = models 中创建的类名() 对象.列名 = '字段值' 对象.save() 进行保存 return HttpResponse( ...

随机推荐

  1. 资深阿里程序员一一为你解刨Web前端知识体系结构,付出与收获成正比!

    只要接触过前端,都会指导web前端的知识主要由三部分组成:分别为静态html,样式css,动态javascript(简称js)这三大部分组成.其三部分组成的一个体系的复杂程度不亚于其他一门技术的复杂程 ...

  2. 2020年全新web前端学习路线图,学完就业20K!

    第一阶段:HTML5+css 配套学习视频: 前端小白零基础入门HTML5+CSS3 第二阶段:移动web网页开发 移动web进阶教程 第三阶段:JavaScript网页编程 前端与移动开发基础入门到 ...

  3. IDEA中文注释难看的简单解决办法

    好多人会发现IDEA这款集成开发工具的中文(主要是在注释上面)显示都比较难看,如下面: 都以为是字体的原因,于是各种替换字体,麻烦不说,还容易造成乱码的问题. 真正难看的原因并不是字体,而是以为是斜体 ...

  4. lombok使用指南,代码极简工具

    我们的项目中会用到各种bean,比如vo,bo,dto等等,bean上的属性我们一般写get(),set()方法,整个java文件看起来很臃肿. 一.简介 我们今天介绍的lombok只用使用注解就可以 ...

  5. 通过注入DLL后使用热补丁钩取API

    通过注入DLL后使用热补丁钩取API 0x00 对比修改API的前五个字节钩取API 对前一种方法钩取API的流程梳理如下: 注入相应的DLL 修改原始AI的函数的前五个字节跳往新函数(钩取API) ...

  6. es6 模块与commonJS的区别

    在刚接触模块化开发的阶段,我总是容易将export.import.require等语法给弄混,今天索性记个笔记,将ES6 模块知识点理清楚 未接触ES6 模块时,模块开发方案常见的有CommonJS. ...

  7. Aspose下载图片

    /// <summary> /// 把DataTable数据按照Excel模板导出到Excel /// </summary> /// <param name=" ...

  8. Github Actions简单部署一个vue/react项目

    大体介绍 本文对github actions部署前端项目做一个简单的总结,总体来说,我感觉用它想要部署一个前端项目,可以说非常简单,简单得令人震惊

  9. scala 数据结构(四):列表 List

    1 列表 List-创建List 基本介绍 Scala中的List 和Java List 不一样,在Java中List是一个接口,真正存放数据是ArrayList,而Scala的List可以直接存放数 ...

  10. SQLAlchemy02 /SQLAlchemy对数据的增删改查操作、属性常用数据类型详解

    SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 目录 SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 1.用se ...