表之间的操作
在views.py中进行表操作
<!--导入之前新建的表-->
from .models import Student, Department, Stu_detail, Course
<!--自定义视图函数-->
def func(request):
<!--给表添加数据-->
# Department.objects.get_or_create(d_name='软件')
# Department.objects.get_or_create(d_name='开车')
# Department.objects.get_or_create(d_name='旅游')
# Department.objects.get_or_create(d_name='养鱼')
# Department.objects.get_or_create(d_name='养猪')
# Department.objects.get_or_create(d_name='挖掘机')
# Student.objects.get_or_create(s_name='葛小伦', department_id=1)
# Student.objects.get_or_create(s_name='信爷', department_id=2)
# Student.objects.get_or_create(s_name='马克', department_id=3)
# Student.objects.get_or_create(s_name='红蔻', department_id=1)
# Student.objects.get_or_create(s_name='曾飞飞', department_id=4)
# Student.objects.get_or_create(s_name='杨明', department_id=6)
# Student.objects.get_or_create(s_name='林羽', department_id=4)
# 一对多 操作
<!--取值-->
# d1 = Department.objects.get(d_id=1)
# d3 = Department.objects.get(d_id=3)
# s6 = Student.objects.get(s_id=6)
# s1 = Student.objects.get(s_id=1)
# add方法只有里面不为空时,才能使用 主键修改或添加外键数据
# d1.student_set.add(s6)
# 主键 新建一条 外键的 数据
# d1.student_set.create(s_name='杨塑')
# print(s1.department.d_name) #外键找主键是正向查询
# print(d1.student_set.all()) #主键找外键是反向查询
# 一对多删除 要保证外键能为空
# d1.student_set.remove(s6) #指定删除
# 清空
# d1.student_set.clear()
# 一对一 操作
<!--给表添加数据-->
# Stu_detail.objects.create(s_age=19, s_note='很帅1', s_phone='112', student_id=1)
# Stu_detail.objects.create(s_age=22, s_note='很帅2', s_phone='113', student_id=3)
# Stu_detail.objects.create(s_age=34, s_note='很帅3', s_phone='114', student_id=4)
# Stu_detail.objects.create(s_age=10, s_note='很帅4', s_phone='115', student_id=5)
# Stu_detail.objects.create(s_age=2, s_note='很帅5', s_phone='116', student_id=6)
# Stu_detail.objects.create(s_age=3, s_note='很帅6', s_phone='117', student_id=7)
# Stu_detail.objects.create(s_age=18, s_note='很帅7', s_phone='118', student_id=8)
<!--获取一条数据-->
# stu_detail = Stu_detail.objects.get(id=1)
#
# print(stu_detail.student.s_name)#外键找主键 正向查找
# print(s1.stu_detail) #主键找外键 反向查找
#多对多 操作
<!--新建了多对多的表时,django会自动建一个中间表,存放表的对应关系-->
<!--给表添加数据-->
# Course.objects.create(c_name='python')
# Course.objects.create(c_name='php')
# Course.objects.create(c_name='c#')
# Course.objects.create(c_name='c++')
# Course.objects.create(c_name='java')
# 获取课程
cl1 = Course.objects.get(c_id=1)
cl2 = Course.objects.get(c_id=2)
cl3 = Course.objects.get(c_id=3)
cl4 = Course.objects.get(c_id=4)
cl5 = Course.objects.get(c_id=5)
# 获取学生
s1 = Student.objects.get(s_id=1)
s3 = Student.objects.get(s_id=3)
s4 = Student.objects.get(s_id=4)
# 往中间表增加数据
# s1.course_set.add(cl1, cl3, cl5)
# s3.course_set.add(cl1, cl2, cl5)
# cl4.student.add(s1, s4)
# 查询
# print(s1.course_set.all())#这个学生报名了哪些课程
# print(cl1.student.all())#这个课程有哪些学生报名
# 删除
# s1.course_set.remove(cl3, cl5, cl4)#s1这个学生删除哪些课程
# cl4.student.remove(s4)#cl4这个课程删除哪些学生
# s1.course_set.clear()#清空s1学生的课程
#多表联查
# 查询报名了python的学员的学生信息
# result = Stu_detail.objects.filter(student__course__c_name='python')
# 查询包含某个学生名字的学院信息
# result = Department.objects.filter(student__s_name__contains='王五')
# 查询报了python的所有学生
# result = Student.objects.filter(course__c_name='python')
# 查询软件学院的报了java的学生的学生信息
# result = Stu_detail.objects.filter(student__department__d_name='软件', student__course__c_name='java')
#查询某个学生
result = Student.objects.filter(s_name='葛小伦')
print(result)
<!--函数返回值-->
return HttpResponse('执行成功')