一对一关系
一对一关系指关联的两个表中,任意一方表中的一条记录只与另一方表中的一条记录关联
例如:学生和校园卡之间的关系是一对一关系,一个学生只能有一张校园卡,一张校园卡只能属于一个学生。
定义一对一关系
一对一的关系使用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,可删除关系。
关注个人公众号:测试开发进阶之路