Python Web开发学习-Django(14)一对一关系

一对一关系

一对一关系指关联的两个表中,任意一方表中的一条记录只与另一方表中的一条记录关联

例如:学生和校园卡之间的关系是一对一关系,一个学生只能有一张校园卡,一张校园卡只能属于一个学生。

 定义一对一关系

一对一的关系使用models.OneToOneField字段进行定义

在modles.py文件内定义一对一关系表

#一对一关系
class stus3(models.Model):                      #学生模型3
    xm=models.CharField(max_length=8)           #学生姓名        
    def __str__(self):
        return self.xm
class cards(models.Model):                      #校园卡模型3
    no=models.CharField(max_length=8)           #卡号        
    stu=models.OneToOneField(stus3,on_delete=models.CASCADE,null=True)         #外键,关联学生模型3
    def __str__(self):
        return "no=%s;stu_xm=%s" %(self.no,self.stu.xm)

保存后cmd进入项目,然后进行数据迁移:

 python manage.py makemigrations 

 python manage.py migrate 

 迁移完之后,现在还是一个空表,接下来就要对这两张表进行对象创建。

一对一关系对象创建

 进入cmd交互页面:python manage.py shell,然后在stus3表里创建2个学生并关联

from faqs.models import cards,stus3
x1=stus3.objects.create(xm="张展")
x2=stus3.objects.create(xm="张离")
#将这两个学生与cards表进行关联
c1=cards.objects.create(stu=x1,no="0001")
c2=cards.objects.create(stu=x2,no="0002")

关联之后查看是否关联成功

更改关系

如果0001的想要修改为其他的学生,可以这样操作,直接将c1.stu=x3就改变了原来c1.stu=x1的关系了。

删除关系

将关联对象设置为None,可删除关系。

关注个人公众号:测试开发进阶之路

  

原文地址:https://www.cnblogs.com/zengxuejie/p/14081361.html