PythonWeb开发Django框架学习(十)数据库一对多和多对多操作
2017-07-11 18:41
936 查看
上次讲了关于单个数据库的数据怎么进行增删改查的操作,这次呢说一下对于表间存在关系的数据库的数据进行处理。
1.先在models.py文件中定义相关类:
3.配置urls.py文件:
4.在templates文件夹下新建studentList.html文件,编辑:
6.Model类还是上述,在views.py文件中编写多对多关系(一个兴趣小组有多个学生,同时一个学生可以参加多个兴趣小组)操作:
#多对多操作
def studentM2M(request):
t = loader.get_template('studentM2M.html') # 引入模板
#得到group,再通过group获取学生
group = Group.objects.get(id=1)
student_list = group.members.all()
#获取学生加入的小组
student = Student.objects.get(id=6)
group_list = student.group_set.all()
#学生新加小组
gro = Group.objects.get(id=1)
stu = Student.objects.get(id=7)
MemberShip(group = gro , student=stu).save()
c = {'studentList':student_list,'groupList':group_list} # 传递的值
html = t.render(c) # 加载模板
return HttpResponse(html)7.配置urls.py文件:
url(r'^studentM2M/$', views.studentM2M ),8.创建studentM2M.html文件并编辑:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Student列表</title>
</head>
<body>
{% for student in studentList %}
<li>ID:{{ student.id }},姓名:{{ student.name }},年龄:{{ student.age }},入学时间:{{ student.intime |date:"Y-m-d"}},性别:{{ student.sex }},老师:{{ student.teacher.name }}</li>
{% endfor %}
<hr>
{% for group in groupList %}
<li>ID:{{ group.id }},组名:{{ group.name }}</li>
{% endfor %}
</body>
</html>9.试验一下:
ok,这就是本节所要说的一些数据库的基本操作。
1.先在models.py文件中定义相关类:
# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models import django.utils.timezone as timezone import datetime # Create your models here. #教师类 class Teacher(models.Model): id = models.IntegerField(primary_key=True) name = models.CharField(max_length=50) class Meta: db_table = 'teacher' # 学生类 class Student(models.Model): id = models.IntegerField(primary_key=True) # AutoField name = models.CharField(max_length=50) age = models.IntegerField() intime = models.DateField() sex = models.IntegerField() teacher = models.ForeignKey(Teacher) # 外键关联 class Meta: db_table = 'student' #兴趣小组 class Group(models.Model): id = models.IntegerField(primary_key=True) name = models.CharField(max_length=50) #对应的学生,通过另一个MemberShip表来对应 members = models.ManyToManyField(Student,through="MemberShip") class Meta: db_table = 'group' #兴趣小组和对应的学生表的实体类 class MemberShip(models.Model): id = models.IntegerField(primary_key=True) group = models.ForeignKey(Group) student = models.ForeignKey(Student) class Meta: db_table='membership'2.在views.py文件中进行一对多(一个老师带多个学生)的操作:
#一对多操作 def studentList(request): t = loader.get_template('studentList.html') # 引入模板 #student_list = Student.objects.all() teacher = Teacher.objects.get(id = 1) student_list = teacher.student_set.all() ''' 删除数据: student = Student.objects.get(id = 2) student.delete() 仅仅删除学生数据 删除该学生的老师,及与这个老师相关学生 student.teacher.delete() ''' ''' 新增数据: teacher.student_set.create(name='zoe',age=12,intime="2016-09-12",sex=0)给该老师添加一名学生 ''' c = {'studentList':student_list} # 传递的值 html = t.render(c) # 加载模板 return HttpResponse(html)我注释掉的部分经过验证啦,自己下来验证吧
3.配置urls.py文件:
url(r'^studentList/$', views.studentList ),
4.在templates文件夹下新建studentList.html文件,编辑:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Student列表</title> </head> <body> {% for student in studentList %} <li>ID:{{ student.id }},姓名:{{ student.name }},年龄:{{ student.age }},入学时间:{{ student.intime |date:"Y-m-d"}},性别:{{ student.sex }},老师:{{ student.teacher.name }}</li> {% endfor %} </body> </html>5.试验一下:
6.Model类还是上述,在views.py文件中编写多对多关系(一个兴趣小组有多个学生,同时一个学生可以参加多个兴趣小组)操作:
#多对多操作
def studentM2M(request):
t = loader.get_template('studentM2M.html') # 引入模板
#得到group,再通过group获取学生
group = Group.objects.get(id=1)
student_list = group.members.all()
#获取学生加入的小组
student = Student.objects.get(id=6)
group_list = student.group_set.all()
#学生新加小组
gro = Group.objects.get(id=1)
stu = Student.objects.get(id=7)
MemberShip(group = gro , student=stu).save()
c = {'studentList':student_list,'groupList':group_list} # 传递的值
html = t.render(c) # 加载模板
return HttpResponse(html)7.配置urls.py文件:
url(r'^studentM2M/$', views.studentM2M ),8.创建studentM2M.html文件并编辑:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Student列表</title>
</head>
<body>
{% for student in studentList %}
<li>ID:{{ student.id }},姓名:{{ student.name }},年龄:{{ student.age }},入学时间:{{ student.intime |date:"Y-m-d"}},性别:{{ student.sex }},老师:{{ student.teacher.name }}</li>
{% endfor %}
<hr>
{% for group in groupList %}
<li>ID:{{ group.id }},组名:{{ group.name }}</li>
{% endfor %}
</body>
</html>9.试验一下:
ok,这就是本节所要说的一些数据库的基本操作。
相关文章推荐
- PythonWeb开发Django框架学习(八)Model与数据库初步
- PythonWeb开发Django框架学习(十一)使用框架自带Admin管理数据库数据
- python web框架Django学习(六)数据库
- PythonWeb开发Django框架学习(九)使用Model类操作数据库数据
- Python的Django框架中使用SQLAlchemy操作数据库的教程
- Python django学习之:model (与数据库操作)
- PythonWeb开发Django框架学习(五)Template标签
- Python Web开发Django框架学习(十三)连接MySQL数据库
- PythonWeb开发Django框架学习(十二)基础总结
- PythonWeb开发Django框架学习(七)URL的配置
- PythonWeb开发Django11框架学习(四)Template进一步
- Python的Django框架中使用SQLAlchemy操作数据库的教程
- PythonWeb开发Django框架学习(六)Tempalte过滤器
- DJANGO基础学习之数据库操作
- python Web框架 Django学习(2)
- Python框架之Django学习笔记(五)
- Python学习笔记-数据库操作
- [置顶] Android Afinal框架学习(一) FinalDb 数据库操作
- Django数据库操作(python)
- python Web框架 Django学习(4) API