django一对一关系物理外键

首先创建,之后对其进行操作

一对一,即一个表中的 “一条” 数据,仅对应另一个表中的 “一条” 数据

# 创建学员模型
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('演示 一对一模型关系的操作')

你可能感兴趣的:(django,web后端,python,django)