-
一对一模型
#⼀个学⽣有⼀个档案,⼀个档案属于⼀个学⽣,那么学⽣表和档案表就是⼀对⼀关 #系。学⽣表是主表,档案表是从表,从表中有⼀个外键和学⽣表关联,并且要求外 #键取值唯⼀。对应关键字为:OneToOneField #创建模型 class Student(models.Model): sno = models.CharField(max_length=6,primary_key=True) sname = models.CharField(max_length=100,null=False) ssex = models.CharField(max_length=2,default='男',null=True) sage = models.IntegerField(null=True) sclass = models.CharField(max_length=10,null=True) def __str__(self): return "no:{},name:{}".format(self.sno,self.sname) class Meta: db_table = 'student' class Archives(models.Model): idcard = models.CharField(max_length=18, unique=True) address = models.CharField(max_length=200,null=True) # on_delete=models.CASCADE 级联删除,删除学⽣会连同档案⼀块删除 student = models.OneToOneField(Student, on_delete=models.CASCADE) def __str__(self): return "{},{}".format(self.idcard,self.address) class Meta: db_table = 'archives'
-
增加数据
def addstudent(request): student = Student() student.sno = '180502' student.sname = '杨康' student.sage = 22 student.save() return HttpResponse("增加了⼀个学⽣") def addarchives(request): stu = Student.objects.get(pk='180503') arc = Archives() arc.idcard = '130098384893838953' arc.student = stu #学⽣对象必须已经保存到数据库,否则错误 arc.save() return HttpResponse("增加档案")
-
删除数据
def deletestudent(request): student = Student.objects.get(pk='180503') student.delete() return HttpResponse("删除")
-
正反向查询
# 正向查询 def findstudent(request): # 获取学⽣信息 student = Student.objects.first() print(student) # 通过学⽣对象获取档案信息 archive = student.archives print(archive) return HttpResponse(student) #反向查询 def findarchives(request): #获取档案记录 archive = Archives.objects.first() #通过档案获取关联学⽣信息 student = archive.student return HttpResponse(student)
-
跨关系查询
def lookup(request): #根据档案查学⽣ # student = Student.objects.get(archives__pk=1) student = Student.objects.get(archives__idcard='13009488384383838') #根据学⽣查档案 archive = Archives.objects.get(student__sno='180501') return HttpResponse(archive)
-
级联删除
on_delete CASECADE 默认,默认级联删除数据 PROTECT 保护模式,当从表中存在级联记录的时候,删除主表记录会抛 出保护异常,从表中不存在级联数据的时候,是允许删除的 SET_XXX NULL 外键字段本身必须允许为空 DEFAULT 外键字段本身有默认值 DO_NOTHING 什么都不做
Django—模型对应关系(一对一)
最新推荐文章于 2022-08-09 19:27:38 发布