django模型系统三

表之间的操作
在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('执行成功')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值