Django,数据库一对多,反向查询

本文介绍了在Django中如何建立数据库一对多关系,并详细讲解了如何使用反向查询操作,特别是通过自动生成的关联属性`student_set`进行相关操作。
  1. 定义类,创建表

    	from django.db import models
    		class Teacher(models.Model):
    	   	    teacher_name = models.CharField('老师名', max_length=20)
    	
    		class Student(models.Model):
    		    student_name = models.CharField('学生名', max_length=20)
    	  	    teacher= models.ForeignKey(Teacher)
    
  2. 创建一对多的对象

    	import models
    	teacherWang = models.Teacher.objects.create(teacher_name='王老师')
    	models.Student.objects.create(student_name='小明', teacher = teacherWang)
    	models.student.objects.create(student_name='小红', teacher_id = teacherWang.id)
    
  3. 反向查询

    	teacherWang.student_set.all()
    	teacherWang.student_set.filter(id=1)
    

    在创建一对多的对象,Django会自动生成一个关联属性 student_set (对象名_set)用于表示对对应的book的查询对象相关操作,即可通过student_set的属性方法进行反向查询

    多对多的方法
    	teacherWang.student_set.all()
    	teacherWang.student_set.filter()
    	teacherWang.student_set.create(...)  # 创建新的学生并关联作用老师teacherWang
    	teacherWang.student_set.add(student)   # 给已有的学生添加当前的老师teacherWang
    	teacherWang.student.clear()  # 删除teacher所有关联的student
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值