Django学习路8_学生表和班级表级联并相互查询信息
2024-09-12 08:25:31
在创建好的 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
最新文章
- WPF入门:XAML
- web聊天室
- Oracle VM Virtual
- codeforces B. Fixed Points 解题报告
- ASP.NET 中通过Form身份验证 来模拟Windows 域服务身份验证的方法
- uva1262Password
- Hbase案例分析(二)
- java 文件操作 读取字节级数据(读取)
- python_如何使用临时文件
- ELK学习总结(4-1)elasticsearch更改mapping(不停服务重建索引)
- PHP左侧菜单栏的管理与实现
- 立即执行函数(自执行函数) IIFE
- WPF如何实现TreeView节点重命名
- 我了解到的新知识之—MPLS
- Bootstrap3基础 warning/active... 表格的状态类(不同的背景色)
- centos7部署fabric-ca错误解决
- JavaScript 函数声明与函数表达式的区别 函数声明提升(function declaration hoisting)
- POJ2229 Sumsets
- $.ajax的重写
- .net生成条形码
热门文章
- 《算法笔记》9.4小节 问题 B: 二叉搜索树
- LINUX 下 一些常用的信息显示命令:
- vue项目chunk包loading失败解决办法
- 编辑器之神_vim
- 生日聚会Party——这个线性dp有点嚣张
- 整理一下CSS最容易躺枪的二十规则,大家能躺中几条?
- Lost connection to MYSQL server at &#39;reading for initial communication packet&#39;
- POJ 1852 Ants(贪心)
- python中pymysql executemany 批量插入数据
- GAN网络从入门教程(三)之DCGAN原理