首先创建,之后对其进行操作
一对一,即一个表中的 “一条” 数据,仅对应另一个表中的 “一条” 数据
# 创建学员模型
class Stu(models.Model):
sname = models.CharField(max_length=6)
age = models.IntegerField()
#创建学员详情模型
#注意表的先后顺序,或者在OneToOneField(“stu”)加引号
class StuInfo(models.Model):
jiguan = models.CharField(max_length=10)
xueli = models.CharField(max_length=10)
'''
第一个参数:是被关联的模型名称
第二个参数:当关联表中的一条数据被删除的时候,与之对应的详情表数据也会被删除
OneToOneField()是一对一关系的方法 Stu是关联的那一个表 on_delete表示删除时的关联
'''
uid = models.OneToOneField(Stu, on_delete=models.CASCADE)
一对一模板的操作
# 创建视图函数 演示 一对一模型关系的操作
def onetoone(request):
# 添加的俩种方式
# 创建学员信息
ob = Stu(sname='李四',age=24)
ob.save()
# 添加学员详情信息
obi = StuInfo()
obi.jiguan = '山西'
obi.xueli = '本科'
# 注意,在给外键添加数据时,只能选择对象,不能设为对象的id
obi.uid = ob
obi.save()
# 查询
# 通过学员 获取学员详情
ob = Stu.objects.first()
# print(ob.sname)
# print(ob.stuinfo) # 通过学员对象获取与之关联的 学员详情 对象
# print(ob.stuinfo.xueli)
# 通过学员详情,获取学员信息
# ob = StuInfo.objects.last()
# print(ob.jiguan)
# print(ob.uid) # 通过学员详情对象 获取与之关联的 学员 对象
# 获取info详情表,通过外键链接另一个表的字段,如下
# print(ob.uid.sname)
# 删除
# ob = Stu.objects.first()
# ob.delete()
return HttpResponse('演示 一对一模型关系的操作')